{"version":3,"sources":["webpack://_N_E/./new/auto/static/9-bg.png","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.is-iterable.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/array/is-array.js","webpack://_N_E/./public/static/car-bg-l.png","webpack://_N_E/./new/auto/static/0-bg.png","webpack://_N_E/./new/auto/static/radio-active.png","webpack://_N_E/./new/auto/static/4-bg.png","webpack://_N_E/./new/auto/static/9-active.png","webpack://_N_E/./components/view-image/constant.ts","webpack://_N_E/./components/view-image/decode.ts","webpack://_N_E/./components/view-image/utils.ts","webpack://_N_E/./components/view-image/image-zoom.tsx","webpack://_N_E/./components/view-image/index.tsx","webpack://_N_E/./node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js","webpack://_N_E/./node_modules/@arsenal/arsenal/modules/getQuery.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js","webpack://_N_E/./node_modules/core-js/internals/string-repeat.js","webpack://_N_E/./public/static/dcar-score.png","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.is-array.js","webpack://_N_E/./new/auto/static/0-active.png","webpack://_N_E/./pages-components/auto/home/utils.ts","webpack://_N_E/./new/home/components/dong-che-fen/stars.tsx","webpack://_N_E/./public/static/user-loading.png","webpack://_N_E/./new/auto/static/1-active.png","webpack://_N_E/./new/auto/static/w-star.png","webpack://_N_E/./node_modules/@arsenal/arsenal/node_modules/core-js/modules/_same-value.js","webpack://_N_E/./new/auto/static/1-bg.png","webpack://_N_E/./new/auto/static/6-bg.png","webpack://_N_E/./new/auto/static/checkbox-active.png","webpack://_N_E/./node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js","webpack://_N_E/./new/auto/static/star.png","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-detect.js","webpack://_N_E/./node_modules/core-js/internals/this-number-value.js","webpack://_N_E/./node_modules/invariant/browser.js","webpack://_N_E/./node_modules/core-js/modules/es.string.match.js","webpack://_N_E/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?ddd1","webpack://_N_E/./new/auto/static/radio.png","webpack://_N_E/./new/auto/static/4-active.png","webpack://_N_E/./new/auto/static/7-active.png","webpack://_N_E/./new/auto/reducer.tsx","webpack://_N_E/./new/auto/brand-list.tsx","webpack://_N_E/./new/auto/helper.ts","webpack://_N_E/./new/auto/car-list.tsx","webpack://_N_E/./new/auto/car-list-item.tsx","webpack://_N_E/./new/auto/car-list-spider.tsx","webpack://_N_E/./new/auto/selected.tsx","webpack://_N_E/./new/auto/price-input.tsx","webpack://_N_E/./new/auto/single-list.tsx","webpack://_N_E/./new/auto/series-type.tsx","webpack://_N_E/./new/auto/conditions-config.ts","webpack://_N_E/./new/auto/multiple-list.tsx","webpack://_N_E/./new/auto/other.tsx","webpack://_N_E/./new/auto/fuel-form.tsx","webpack://_N_E/./new/auto/conditions.tsx","webpack://_N_E/./new/auto/conditions-list.tsx","webpack://_N_E/./new/auto/less.tsx","webpack://_N_E/./server/common/utils.ts","webpack://_N_E/./new/auto/library.tsx","webpack://_N_E/./pages/auto/library/.tsx","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/array/from.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.from.js","webpack://_N_E/./node_modules/@arsenal/arsenal/node_modules/core-js/modules/es6.regexp.search.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack://_N_E/./lib/zt-util.ts","webpack://_N_E/./node_modules/core-js/internals/number-parse-float.js","webpack://_N_E/./node_modules/core-js/internals/array-fill.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/is-iterable.js","webpack://_N_E/./new/auto/static/6-active.png","webpack://_N_E/./new/auto/static/2-active.png","webpack://_N_E/./new/auto/static/checkbox.png","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-call.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://_N_E/./node_modules/react-intersection-observer/react-intersection-observer.esm.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://_N_E/./node_modules/react-intersection-observer/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack://_N_E/./node_modules/core-js/modules/es.array.splice.js","webpack://_N_E/./node_modules/core-js/modules/es.parse-float.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_create-property.js","webpack://_N_E/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://_N_E/./new/auto/static/2-bg.png","webpack://_N_E/./new/auto/static/7-bg.png","webpack://_N_E/./public/static/dongchedi-logo.svg","webpack://_N_E/./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array-iter.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js","webpack://_N_E/./components/view-image/style.ts","webpack://_N_E/./node_modules/core-js/modules/es.array.fill.js","webpack://_N_E/./node_modules/@babel/runtime-corejs2/helpers/toArray.js"],"names":["module","exports","classof","ITERATOR","Iterators","isIterable","it","O","Object","undefined","hasOwnProperty","Array","isArray","domainWhiteList","domainBlackList","decodeUri","originStr","origin","some","domain","includes","logger","warn","metrics","counter","url","split","objUrlRegex","test","matches","match","legacyUrlRegex0","legacyUrlRegex1","legacyUrlRegex2","legacyUrlRegex3","canUseWebp","document","elem","createElement","getContext","toDataURL","indexOf","getOptimizedImage","params","src","unoptimized","width","height","autoPixelRatio","applyHttpsImage","uri","domainList","Math","floor","random","length","getDomain","size","pixelRatio","window","devicePixelRatio","abs","getSize","ext","getExt","ImageZoom","zoomHeight","children","className","loadImg","restProps","styles","display","position","assign","paddingBottom","style","userLoading","require","carLoading","Image","props","lazy","rootMargin","useTransition","hoverTransition","alt","cusDefaultImg","errorImg","isBase64","startsWith","isLazy","notUseWebp","useInView","threshold","triggerOnce","setRef","isIntersected","inView","imgStyle","visibility","realSrc","React","imgRef","retryTimesRef","setRefCallbck","ele","current","ref","classnames","onError","error","setAttribute","_Array$isArray","arr","_interopRequireDefault","defineProperty","value","default","_toArray2","getQuery","name","search","location","substr","queries","forEach","c","_c$split","_c$split2","key","values","slice","decodeURIComponent","join","_default","TypeError","toInteger","requireObjectCoercible","repeat","count","str","String","this","result","n","Infinity","RangeError","$export","S","buildUrl","newOptions","allConditionKeys","stringArr","push","map","item","option","param","toString","replace","i","filter","q","Stars","starIcon","starVacantIcon","score","maxScore","starWidth","starHeight","stars","intersection","ceil","classNames","index","is","x","y","_Array$from","_isIterable","iter","prototype","call","SAFE_CLOSING","riter","from","e","exec","skipClosing","safe","next","done","condition","format","a","b","d","f","Error","args","argIndex","framesToPop","fixRegExpWellKnownSymbolLogic","anObject","toLength","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","matcher","RegExp","res","rx","global","fullUnicode","unicode","lastIndex","A","matchStr","__NEXT_P","initOptions","reducer","state","action","type","options","payload","concat","text","ContextStore","createContext","dispatch","ContextProvider","initProps","useReducer","useEffect","Provider","DEFAULT_LETTERS","Brand","letters","brands","useContext","router","useRouter","useState","currentLetter","setCurrentLetter","currentId","setCurrentId","renderLetters","onClick","href","pathname","active","letter","preventDefault","stopPropagation","sendTeaCommEvent","initial","brand","id","more","info","brand_id","pinyin","title","brand_name","event_id","image_url","fill","getCars","queryStr","cityName","offset","fetch","getUrl","method","headers","body","encodeURIComponent","then","json","data","status","getParamsFromState","entries","star","star_black","carBg","CarList","sort","useCityName","useRef","loading","setLoading","series","series_count","carData","setCarData","getParams","useCallback","renderList","car_ids","series_id","as","target","car_series_name","outter_name","car_series_id","cover_url","top","left","transform","series_name","dcar_score","dealer_price","getZT","button_name","isOptionActive","catch","err","Fragment","role","end","loadMoreHandler","list_item_num","spiderList","Select","conditions","filterList","useMemo","Set","newOption","PriceInput","price","typeText","line","getValue","parseInt","parseFloat","toFixed","low","setLow","high","setHigh","errorMsg","Boolean","isActive","onChange","mLow","mHigh","SingleList","setCurrent","event","selected","typeConfig","classParam","SeriesType","handleOptionClick","isSeriesTypeActive","series_type","outter_detail_type","find","child","outterDetailValue","hasChildren","DEFAULT_VALUE","MultipleList","isAll","setCurrentProxy","tmp","splice","car_category_name","car_category_value","typeArr","Other","typeSingleValue","template","typeSelectValue","typeData","clearLine","currentLine","handleSelectClick","FuelForm","isFuelFormActive","fuel_form","itemParam","Conditions","hideline","foldprops","fold","setFold","copyItem","price_range","car_style_category_name","dscore_range","car_energy_category_name","car_national_category_name","car_struct_category","seat_count_range","sendTea","sortArr","shrink_type","ConditionsList","foldProps","onSSR","autoLibraryStyle","SPIDER_UA","getSpider","ua","spiderKey","AutoLibrary","query","init","setInit","searchParams","defaultShow","foldParam","fullYear","Date","getFullYear","description","keywords","console","content","rel","asPath","reHandleData","list","shift","hot_brand","paramsList","newItem","handlePath","splitArr","keys","reduce","acc","curr","Number","getInitialProps","req","_pageType","withRouter","AutoHome","ctx","toObject","isArrayIter","createProperty","getIterFn","F","arrayLike","step","iterator","C","aLen","arguments","mapfn","mapping","iterFn","sameValue","defined","SEARCH","$search","fn","previousLastIndex","_sessionStorage","getItem","sessionStorage","setItem","appendLabel","paramZT","zt","trim","whitespaces","$parseFloat","FORCED","string","trimmedString","charAt","toAbsoluteIndex","argumentsLength","endPos","ret","_extends","source","apply","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","enumerable","configurable","writable","INSTANCE_MAP","Map","OBSERVER_MAP","ROOT_IDS","consecutiveRootId","observe","element","callback","_options","root","has","observerId","get","set","getRootId","observerInstance","IntersectionObserver","instance","observer","thresholds","unobserve","itemsLeft","rootObserved","disconnect","changes","isIntersecting","intersectionRatio","_React$Component","subClass","superClass","InView","_this","_len","_key","entry","node","observeNode","setState","create","constructor","__proto__","_proto","componentDidMount","componentDidUpdate","prevProps","prevState","componentWillUnmount","_this$props","handleChange","render","_this$state","isPlainChildren","handleNode","_this$props2","tag","excluded","sourceKeys","_objectWithoutPropertiesLoose","_React$useState","$","arraySpeciesCreate","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","max","min","proto","forced","start","deleteCount","insertCount","actualDeleteCount","k","to","len","actualStart","parseFloatImplementation","$defineProperty","createDesc","object","thisNumberValue","fails","nativeToFixed","pow","fractionDigits","z","j","number","fractDigits","sign","multiply","c2","divide","dataToString","s","t","x2","log","ArrayProto","imageStyles","addToUnscopables","arrayWithHoles","iterableToArray","nonIterableRest"],"mappings":"mGAAAA,EAAOC,QAAU,6G,uBCAjB,IAAIC,EAAU,EAAQ,QAClBC,EAAW,EAAQ,OAAR,CAAkB,YAC7BC,EAAY,EAAQ,QACxBJ,EAAOC,QAAU,EAAQ,QAAWI,WAAa,SAAUC,GACzD,IAAIC,EAAIC,OAAOF,GACf,YAAuBG,IAAhBF,EAAEJ,IACJ,eAAgBI,GAEhBH,EAAUM,eAAeR,EAAQK,M,uBCRxC,EAAQ,QACRP,EAAOC,QAAU,EAAQ,QAAuBU,MAAMC,S,qBCDtDZ,EAAOC,QAAU,iH,qBCAjBD,EAAOC,QAAU,6G,qBCAjBD,EAAOC,QAAU,89D,qBCAjBD,EAAOC,QAAU,6G,qBCAjBD,EAAOC,QAAU,iH,gdCAXY,G,UAAkB,CACtB,aACA,cACA,iBACA,qBAGIC,EAAkB,CAAC,WAAY,gBCF9B,SAASC,EAAUC,GACxB,IAAIC,EAASD,EACb,IAAKC,EACH,OAAO,KAIT,GD0BOH,EC1BOI,MAAK,SAACC,GAAD,yBAAYF,SAAZ,iBAAY,EAAQG,gBAApB,aAAY,mBAAsBD,EAAtB,SAC7B,OAAO,KAGT,IDSON,ECTQK,MAAK,SAACC,GAAD,yBAAYF,SAAZ,iBAAY,EAAQG,gBAApB,aAAY,oBAAuBD,EAAvB,SAG9B,OAFAE,IAAOC,KAAP,6DAAkEL,IAClEM,IAAQC,QAAQ,uBAAwB,CAAEC,IAAKR,IACxC,KAITA,EAASA,EAAOS,MAAM,KAAK,GAE3B,IAAMC,EAAc,cAEpB,GAAIA,EAAYC,KAAKX,GAAS,CAC5B,IAAMY,EAAUZ,EAAOa,MAAMH,GAC7B,UAAIE,QAAJ,IAAIA,OAAJ,EAAIA,EAAU,GACZ,OAAOA,EAAQ,GAInB,IAAME,EAAkB,sDACxB,GAAIA,EAAgBH,KAAKX,GAAS,CAChC,IAAMY,EAAUZ,EAAOa,MAAMC,GAC7B,UAAIF,QAAJ,IAAIA,OAAJ,EAAIA,EAAU,GACZ,8BAAwBA,EAAQ,IAIpC,IAAMG,EAAkB,0BACxB,GAAIA,EAAgBJ,KAAKX,GAAS,CAChC,IAAMY,EAAUZ,EAAOa,MAAME,GAC7B,UAAIH,QAAJ,IAAIA,OAAJ,EAAIA,EAAU,GACZ,8BAAwBA,EAAQ,IAKpC,IAAMI,EAAkB,uCACxB,GAAIA,EAAgBL,KAAKX,GAAS,CAChC,IAAMY,EAAUZ,EAAOa,MAAMG,GAC7B,GAAIJ,GAAWA,EAAQ,IAAMA,EAAQ,GACnC,gBAAUA,EAAQ,GAAlB,YAAwBA,EAAQ,IAKpC,IAAMK,EAAkB,8CACxB,GAAIA,EAAgBN,KAAKX,GAAS,CAChC,IAAMY,EAAUZ,EAAOa,MAAMI,GAC7B,GAAIL,GAAWA,EAAQ,IAAMA,EAAQ,GACnC,gBAAUA,EAAQ,GAAlB,YAAwBA,EAAQ,IAKpC,IACMA,EAAUZ,EAAOa,MADA,yCAEvB,OAAID,GAAWA,EAAQ,IAAMA,EAAQ,GACnC,UAAUA,EAAQ,GAAlB,YAAwBA,EAAQ,KAElCR,IAAOC,KAAP,mDAAwDL,IACxDM,IAAQC,QAAQ,qBAAsB,CAAEC,IAAKR,IACtC,M,gBCtEHkB,EAAc,WAClB,GAAwB,qBAAbC,SACT,OAAO,EAET,IAAMC,EAAOD,SAASE,cAAc,UACpC,SAAID,GAAQA,EAAKE,YAAcF,EAAKE,WAAW,QACsB,IAA5DF,EAAKG,UAAU,cAAcC,QAAQ,mBAN5B,GA4Db,SAASC,EAAkBC,GAAiC,IACzDC,EAAoDD,EAApDC,IAAKC,EAA+CF,EAA/CE,YAAaC,EAAkCH,EAAlCG,MAAOC,EAA2BJ,EAA3BI,OAAQC,EAAmBL,EAAnBK,eACzC,GAAIH,EACF,OAAOI,YAAgBL,GAGzB,IAAMM,EAAMnC,EAAU6B,GACtB,IAAKM,EACH,OAAOD,YAAgBL,GAGzB,IAAMzB,EA5DR,WACE,IAAMgC,EAAa,CACjB,2BACA,2BACA,4BAEF,OAAOA,EAAWC,KAAKC,MAAMD,KAAKE,SAAWH,EAAWI,SAsDzCC,GACTC,EApDR,WAAgE,IAA/CX,EAA+C,uDAAvC,EAAGC,EAAoC,uDAA3B,EAAGC,EAAwB,wDAC9D,IAAKF,IAAUC,EACb,MAAO,OAIT,GAAIC,EAAgB,OAE6C,EAD3DU,EAAa,EAIjB,OAHI,UAAiCC,cAAjC,aAAiC,EAAQC,oBAC3CF,EAAU,UAAGC,cAAH,aAAG,EAAQC,kBAEvB,UAAUR,KAAKS,IAAIf,EAAQY,GAA3B,YAA0CN,KAAKS,IAAId,EAASW,IAE9D,gBAAUN,KAAKS,IAAIf,GAAnB,YAA6BM,KAAKS,IAAId,IAuCzBe,CAAQhB,EAAOC,EAAQC,GAC9Be,EArCR,SAAgBnB,GACd,GAAIT,EACF,MAAO,OAET,IAAMN,EAAUe,EAAId,MAAM,yBAC1B,OAAKD,GAAYA,EAAQ,KAIpBM,GAA6B,SAAfN,EAAQ,IAIpBA,EAAQ,GAPN,QA+BGmC,CAAOpB,GACnB,kBAAYzB,EAAZ,gBAA0B+B,EAA1B,YAAiCO,EAAjC,YAAyCM,G,6FCpB5BE,EAlDqB,SAAC,GAM/B,IALJC,EAKI,EALJA,WACAC,EAII,EAJJA,SAII,IAHJC,iBAGI,MAHQ,GAGR,MAFJC,eAEI,SADDC,EACC,+DACEC,EAAc,CAClBC,QAAS,eACTC,SAAU,YAUZ,OAPIP,GACF1D,OAAOkE,OAAOH,EAAQ,CACpBI,cAAeT,EACfpB,MAAO,SAKT,qBACE8B,MAAOL,GAIHD,EALN,6FAGID,EAAU,kBAAoB,GAHlC,YAIMD,MAGHD,EAPH,2N,2lBCrBG,IAAMU,EAAcC,EAAQ,QACtBC,EAAaD,EAAQ,QAuErBE,GAtEcF,EAAQ,QAsEQ,SAACG,GAAU,MAElDrC,EAcEqC,EAdFrC,IACAgC,EAaEK,EAbFL,MAHkD,EAgBhDK,EAZFC,YAJkD,SAKlDd,EAWEa,EAXFb,UALkD,EAgBhDa,EAVFE,kBANkD,MAMrC,cANqC,IAgBhDF,EATFpC,mBAPkD,WAgBhDoC,EARFG,qBARkD,WAgBhDH,EAPFI,uBATkD,SAUlDvC,EAMEmC,EANFnC,MACAC,EAKEkC,EALFlC,OAXkD,EAgBhDkC,EAJFK,WAZkD,MAY5C,GAZ4C,IAgBhDL,EAHFM,qBAbkD,MAFpD,6IAEoD,EAclDC,EAEEP,EAFFO,SAdkD,EAgBhDP,EADFjC,sBAfkD,SAkB9CyC,EAAQ,OAAG7C,QAAH,IAAGA,GAAH,UAAGA,EAAK8C,kBAAR,aAAG,OAAA9C,EAAkB,SAE7B+C,GAASF,GAAmBP,EAE5BU,IAAaH,GAAkB5C,EAtBe,EAwBpBgD,YAAU,CACxCV,aACAW,UAAW,EACXC,aAAa,IA3BqC,mBAwB7CC,EAxB6C,KAwBrCC,EAxBqC,KA6B9CC,GAAUP,GAAUM,EAEtBE,EAAwC,CAC1CC,WAAYF,EAAS,UAAY,UAG7BG,EAAUC,WAAc,WAC5B,OAAKJ,EAIExD,EAAkB,CACvBE,MACAC,YAAa+C,EACb9C,QACAC,SACAC,mBAPOuC,IASR,CAACW,EAAQtD,EAAKE,EAAOC,EAAQ6C,EAAY5C,IAEtCuD,EAASD,SAAsC,MAG/CE,EAAgBF,SAAa,GAE/BzD,IACFsD,OAAW1F,GAGb,IAAMgG,EAAgBH,eACpB,SAACI,GACCH,EAAOI,QAAUD,EACjBV,EAAOU,KAET,CAACV,EAAQO,IAKX,OAHAD,aAAgB,WACdE,EAAcG,QAAU,IACvB,CAAC/D,EAAKE,EAAOC,EAAQ6C,IAEtB,SACEgB,IAAKH,EACLnB,IAAKA,EACL1C,IAAKyD,EACLzB,MAAK,OACAA,GACAuB,GAEL/B,UAAWyC,IACTzC,EACAiB,GAAmB,GAAJ,OApFC,iBAoFD,UACfD,GAAiB,GAAJ,OArFG,iBAqFH,SACbc,GAAU,GAAJ,OAtFU,iBAsFV,QAERY,QAAS,WAAM,MAQkB,EAMV,GAbrBzF,IAAO0F,MAAP,yDACoDV,GAClD,CACEzD,QAGJrB,IAAQC,QAAQ,4BAA6B,CAAE6E,UAASzD,QACpD4D,EAAcG,QAAU,GAE1B,UAAAJ,EAAOI,eAAP,SAAgBK,aAAa,MAAOxB,GAAYD,IAGlDiB,EAAcG,SAAW,EACrB/D,IAAQyD,EAMZ,UAAAE,EAAOI,eAAP,SAAgBK,aAAa,MAAOpE,GAJlC,UAAA2D,EAAOI,eAAP,SAAgBK,aAAa,MAAOxB,GAAYD,U,uBCpL1D,IAAI0B,EAAiB,EAAQ,QAM7BjH,EAAOC,QAJP,SAAyBiH,GACvB,GAAID,EAAeC,GAAM,OAAOA,I,kCCDlC,IAAIC,EAAyB,EAAQ,QAErC,EAAQ,QAER3G,OAAO4G,eAAenH,EAAS,aAAc,CAC3CoH,OAAO,IAETpH,EAAQqH,aAAU,EAElB,IAAIC,EAAYJ,EAAuB,EAAQ,SAU/C,SAASK,EAASC,EAAMC,QACP,IAAXA,IACFA,EAA2B,qBAAX/D,QAA0BA,OAAOgE,UAAYhE,OAAOgE,SAASD,OAAOE,OAAO,IAG7F,IAAIC,EAAU,GAad,OAZAH,GAAUA,EAAOhG,MAAM,KAAKoG,SAAQ,SAAUC,GAC5C,GAAU,KAANA,EAAJ,CAIA,IAAIC,EAAWD,EAAErG,MAAM,KACnBuG,GAAY,EAAIV,EAAUD,SAASU,GACnCE,EAAMD,EAAU,GAChBE,EAASF,EAAUG,MAAM,GAE7BP,EAAQQ,mBAAmBH,IAAQG,mBAAmBF,EAAOG,KAAK,UAE7Db,EAAOI,EAAQJ,GAAQI,EA1BhC,EAAQ,QAER,EAAQ,QAER,EAAQ,QAER,EAAQ,QAuBRL,EAASF,QAAUE,EACnB,IAAIe,EAAWf,EACfvH,EAAQqH,QAAUiB,EAClBvI,EAAOC,QAAUA,EAAiB,S,mBCzClCD,EAAOC,QAJP,WACE,MAAM,IAAIuI,UAAU,0D,kCCAtB,IAAIC,EAAY,EAAQ,QACpBC,EAAyB,EAAQ,QAIrC1I,EAAOC,QAAU,GAAG0I,QAAU,SAAgBC,GAC5C,IAAIC,EAAMC,OAAOJ,EAAuBK,OACpCC,EAAS,GACTC,EAAIR,EAAUG,GAClB,GAAIK,EAAI,GAAKA,GAAKC,IAAU,MAAMC,WAAW,+BAC7C,KAAMF,EAAI,GAAIA,KAAO,KAAOJ,GAAOA,GAAc,EAAJI,IAAOD,GAAUH,GAC9D,OAAOG,I,mBCZThJ,EAAOC,QAAU,mH,qBCCjB,IAAImJ,EAAU,EAAQ,QAEtBA,EAAQA,EAAQC,EAAG,QAAS,CAAEzI,QAAS,EAAQ,W,mBCH/CZ,EAAOC,QAAU,iH,4HCiCFqJ,IAjCE,SAACC,EAAiBC,GACjC,IAAMtC,EAAW,GA8BjB,OA7BAsC,EAAiB1B,SAAQ,SAAC2B,GACxBvC,EAAIwC,KACFD,EAAUE,KAAI,SAACC,GACb,YAAyBnJ,IAArB8I,EAAWK,IAAmD,IAA5BL,EAAWK,GAAMrG,OAC9CgG,EAAWK,GAAMD,KAAI,SAACE,GAC3B,OAAOA,EAAOC,MAAMC,WAAWC,QAAQ,IAAK,QAGvC,WAKE9C,EAAIyC,KAAI,SAACC,EAAWK,GACnC,OAAU,IAANA,GAAiB,KAANA,EACNL,EAAKtB,KAAK,KAEoC,IAAjDsB,EAAKM,QAAO,SAACC,GAAD,MAAqB,MAANA,KAAW5G,OACjC,IAEFqG,EACJD,KAAI,SAACQ,EAAWF,GACf,MAAU,MAANE,EAAkBF,EAAI,EACnB,KAERC,QAAO,SAACC,GAAD,OAAqB,IAANA,KACtB7B,KAAK,QAGIA,KAAK,O,wLClBR,SAAS8B,EAAMnF,GAW5B,IAX2C,IAEzCoF,EAOEpF,EAPFoF,SACAC,EAMErF,EANFqF,eACAC,EAKEtF,EALFsF,MACAC,EAIEvF,EAJFuF,SACApG,EAGEa,EAHFb,UANyC,EASvCa,EAFFwF,iBAPyC,MAO7B,GAP6B,IASvCxF,EADFyF,kBARyC,MAQ5B,GAR4B,EAUrCC,EAAQ,GACLV,EAAI,EAAGA,GAAKM,EAAON,IAC1BU,EAAMjB,KAAK,GAEb,IAAMkB,EAAeL,EAAQ,EAK7B,GAJqB,IAAjBK,GACFD,EAAMjB,KAAK,GAGTY,GAAkBE,EACpB,IAAK,IAAIP,EAAI7G,KAAKyH,KAAKN,GAAQN,EAAIO,EAAUP,IAC3CU,EAAMjB,KAAK,GAIf,OACE,OAAsDxB,IAAG,gBAAWqC,GAApE,qCAyBeE,EACCC,EAGeL,EAGAC,EAGhBG,EAAYG,EACXF,EAESD,EAAeC,EAETL,EACTI,GAAa,EAAIG,GAIRN,EAENG,EAAeC,EAExBD,GAAa,EAAIG,GAGlBH,GAAa,EAAIG,OApDhC,KAAcE,IAAW1G,EAAW,kBAApC,KACGuG,EAAMhB,KAAI,SAACjD,EAAKqE,GACf,OAAQrE,GACN,KAAK,EACH,OAAO,UAAuBwB,IAAK6C,EAA5B,qCAqBAN,EACCC,EAGeL,EAGAC,EAGhBG,EAAYG,EACXF,EAESD,EAAeC,EAETL,EACTI,GAAa,EAAIG,GAIRN,EAENG,EAAeC,EAExBD,GAAa,EAAIG,GAGlBH,GAAa,EAAIG,OAhDjB,UACT,KAAK,EACH,OAAO,UAAmC1C,IAAK6C,EAAxC,qCAmBAN,EACCC,EAGeL,EAGAC,EAGhBG,EAAYG,EACXF,EAESD,EAAeC,EAETL,EACTI,GAAa,EAAIG,GAIRN,EAENG,EAAeC,EAExBD,GAAa,EAAIG,GAGlBH,GAAa,EAAIG,OA9CjB,sBACT,KAAK,EACH,OAAO,UAA8B1C,IAAK6C,EAAnC,qCAiBAN,EACCC,EAGeL,EAGAC,EAGhBG,EAAYG,EACXF,EAESD,EAAeC,EAETL,EACTI,GAAa,EAAIG,GAIRN,EAENG,EAAeC,EAExBD,GAAa,EAAIG,GAGlBH,GAAa,EAAIG,OA5CjB,iBACT,QACE,OAAO,SAVf,+BAyBeH,EACCC,EAGeL,EAGAC,EAGhBG,EAAYG,EACXF,EAESD,EAAeC,EAETL,EACTI,GAAa,EAAIG,GAIRN,EAENG,EAAeC,EAExBD,GAAa,EAAIG,GAGlBH,GAAa,EAAIG,KApDhC,yZAyBeH,EAzBf,qBA0BgBC,EA1BhB,2EA6B+BL,EA7B/B,kFAgC+BC,EAhC/B,uEAmCeG,EAAYG,EAnC3B,qBAoCgBF,EApChB,uDAsCyBD,EAtCzB,cAsCwCC,EAtCxC,sDAwC+BL,EAxC/B,2BAyCsBI,GAAa,EAAIG,GAzCvC,0GA6C+BN,EA7C/B,wDA+CyBG,EA/CzB,cA+CwCC,EA/CxC,uCAiDgBD,GAAa,EAAIG,GAjDjC,sCAoDeH,GAAa,EAAIG,GApDhC,a,mBCvCJ5K,EAAOC,QAAU,qH,mBCAjBD,EAAOC,QAAU,iH,mBCAjBD,EAAOC,QAAU,8/C,mBCCjBD,EAAOC,QAAUO,OAAOwK,IAAM,SAAYC,EAAGC,GAE3C,OAAOD,IAAMC,EAAU,IAAND,GAAW,EAAIA,IAAM,EAAIC,EAAID,GAAKA,GAAKC,GAAKA,I,mBCH/DlL,EAAOC,QAAU,6G,mBCAjBD,EAAOC,QAAU,6G,mBCAjBD,EAAOC,QAAU,0xC,qBCAjB,IAAIkL,EAAc,EAAQ,QAEtBC,EAAc,EAAQ,QAM1BpL,EAAOC,QAJP,SAA0BoL,GACxB,GAAID,EAAY5K,OAAO6K,KAAmD,uBAAzC7K,OAAO8K,UAAUvB,SAASwB,KAAKF,GAAgC,OAAOF,EAAYE,K,mBCLrHrL,EAAOC,QAAU,sjD,qBCAjB,IAAIE,EAAW,EAAQ,OAAR,CAAkB,YAC7BqL,GAAe,EAEnB,IACE,IAAIC,EAAQ,CAAC,GAAGtL,KAChBsL,EAAc,OAAI,WAAcD,GAAe,GAE/C7K,MAAM+K,KAAKD,GAAO,WAAc,MAAM,KACtC,MAAOE,IAET3L,EAAOC,QAAU,SAAU2L,EAAMC,GAC/B,IAAKA,IAAgBL,EAAc,OAAO,EAC1C,IAAIM,GAAO,EACX,IACE,IAAI5E,EAAM,CAAC,GACPmE,EAAOnE,EAAI/G,KACfkL,EAAKU,KAAO,WAAc,MAAO,CAAEC,KAAMF,GAAO,IAChD5E,EAAI/G,GAAY,WAAc,OAAOkL,GACrCO,EAAK1E,GACL,MAAOyE,IACT,OAAOG,I,qBCpBT,IAAI5L,EAAU,EAAQ,QAItBF,EAAOC,QAAU,SAAUoH,GACzB,GAAoB,iBAATA,GAAuC,UAAlBnH,EAAQmH,GACtC,MAAMmB,UAAU,wBAElB,OAAQnB,I,kCCwCVrH,EAAOC,QA5BS,SAASgM,EAAWC,EAAQC,EAAGC,EAAGrE,EAAGsE,EAAGV,EAAGW,GAOzD,IAAKL,EAAW,CACd,IAAIlF,EACJ,QAAetG,IAAXyL,EACFnF,EAAQ,IAAIwF,MACV,qIAGG,CACL,IAAIC,EAAO,CAACL,EAAGC,EAAGrE,EAAGsE,EAAGV,EAAGW,GACvBG,EAAW,GACf1F,EAAQ,IAAIwF,MACVL,EAAOlC,QAAQ,OAAO,WAAa,OAAOwC,EAAKC,UAE3ChF,KAAO,sBAIf,MADAV,EAAM2F,YAAc,EACd3F,K,kCC3CV,IAAI4F,EAAgC,EAAQ,QACxCC,EAAW,EAAQ,QACnBC,EAAW,EAAQ,QACnBnE,EAAyB,EAAQ,QACjCoE,EAAqB,EAAQ,QAC7BC,EAAa,EAAQ,QAGzBJ,EAA8B,QAAS,GAAG,SAAUK,EAAOC,EAAaC,GACtE,MAAO,CAGL,SAAeC,GACb,IAAI5M,EAAImI,EAAuBK,MAC3BqE,OAAoB3M,GAAV0M,OAAsB1M,EAAY0M,EAAOH,GACvD,YAAmBvM,IAAZ2M,EAAwBA,EAAQ7B,KAAK4B,EAAQ5M,GAAK,IAAI8M,OAAOF,GAAQH,GAAOlE,OAAOvI,KAI5F,SAAU4M,GACR,IAAIG,EAAMJ,EAAgBD,EAAaE,EAAQpE,MAC/C,GAAIuE,EAAItB,KAAM,OAAOsB,EAAIjG,MAEzB,IAAIkG,EAAKX,EAASO,GACd9D,EAAIP,OAAOC,MAEf,IAAKwE,EAAGC,OAAQ,OAAOT,EAAWQ,EAAIlE,GAEtC,IAAIoE,EAAcF,EAAGG,QACrBH,EAAGI,UAAY,EAIf,IAHA,IAEI3E,EAFA4E,EAAI,GACJ3E,EAAI,EAEgC,QAAhCD,EAAS+D,EAAWQ,EAAIlE,KAAc,CAC5C,IAAIwE,EAAW/E,OAAOE,EAAO,IAC7B4E,EAAE3E,GAAK4E,EACU,KAAbA,IAAiBN,EAAGI,UAAYb,EAAmBzD,EAAGwD,EAASU,EAAGI,WAAYF,IAClFxE,IAEF,OAAa,IAANA,EAAU,KAAO2E,Q,sBCvCzBjK,OAAOmK,SAAWnK,OAAOmK,UAAY,IAAIpE,KAAK,CAC7C,qBACA,WACE,OAAO,EAAQ,Y,mBCJvB1J,EAAOC,QAAU,01E,mBCAjBD,EAAOC,QAAU,iH,mBCAjBD,EAAOC,QAAU,iH,w/BCoEjB,IAAM8N,EAAc,GAEpB,SAASC,EAAQC,EAAyBC,GACxC,OAAQA,EAAOC,MACf,IAAK,YACH,IAAMC,EAAUH,EAAMC,EAAOG,QAAQnG,MAAQ,GAC7C,cACK+F,GADL,kBAEGC,EAAOG,QAAQnG,IAAMkG,EAAQE,OAAO,CACnC,CACExE,MAAOoE,EAAOG,QAAQvE,MACtByE,KAAML,EAAOG,QAAQE,UAK7B,IAAK,kBACH,cACKN,GADL,kBAEGC,EAAOG,QAAQnG,IAAM,CACpB,CACE4B,MAAOoE,EAAOG,QAAQvE,MACtByE,KAAML,EAAOG,QAAQE,SAK7B,IAAK,eACH,IAAMH,EAAUH,EAAMC,EAAOG,QAAQnG,MAAQ,GAC7C,cACK+F,GADL,kBAEGC,EAAOG,QAAQnG,IAAMkG,EAAQlE,QAC5B,SAACL,GAAD,OAAYA,EAAOC,QAAUoE,EAAOG,QAAQvE,WAIlD,IAAK,eACH,OAAOiE,EACT,IAAK,eACH,YACKG,EAAOG,SAEd,QACE,OAAON,GAGX,IAAMS,EAAeC,wBAAwB,CAC3CR,MAAOF,EAEPW,SAAU,eAGNC,EAAkB,SAAC1J,GAAkB,IACjCd,EAAwBc,EAAxBd,SAAUyK,EAAc3J,EAAd2J,UADuB,EAEfC,qBAAWb,EAASY,GAAab,GAApDE,EAFkC,KAE3BS,EAF2B,KAYzC,OANAI,qBAAU,WACRJ,EAAS,CACPP,KAAM,eACNE,QAASO,MAEV,CAACA,IAEF,EAACJ,EAAaO,SAAd,CAAuB1H,MAAO,CAAE4G,QAAOS,aACpCvK,I,yFCpHD6K,EAAkB,CACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGa,SAASC,EAAT,GAA4C,IAA3BC,EAA2B,EAA3BA,QAASC,EAAkB,EAAlBA,OAAkB,EAC7B7I,IAAM8I,WAAWZ,GAArCP,EADiD,EACjDA,MACFoB,GAFmD,EAC1CX,SACAY,uBAF0C,EAGfC,mBAAS,OAA5CC,EAHkD,KAGnCC,EAHmC,OAIvBF,oBAAU,GAArCG,EAJkD,KAIvCC,EAJuC,KAKzD,SAASC,EAAcV,GACrB,OACE,2DACE,QACEhH,IAAK,IAOL2H,QAAS,WACPJ,EAAiB,IACjB,IAAMK,EAAOnM,OAAOgE,SAASoI,SAC7BV,EAAO3F,KAAKoG,EAAMA,IAXtB,4BAEajJ,IACT,gDACA,CACEmJ,OAA0B,KAAlBR,KALd,qBAgBA,QACEtH,IAAK,MAOL2H,QAAS,WACPJ,EAAiB,QATrB,4BAEa5I,IACT,sDACA,CACEmJ,OAA0B,QAAlBR,GAA6C,WAAlBA,KALzC,qBAcCN,EAAQvF,KAAI,SAACsG,GAAD,OACX,QACE/H,IAAK+H,EAILJ,QAAS,SAAClE,GACRA,EAAEuE,iBACFvE,EAAEwE,kBACFC,YAAiB,4BAA6B,CAC5CC,QAASJ,IAEXR,EAAiBQ,IAXrB,4BAEapJ,IAAW,0CAA2C,CAC/DmJ,OAAQC,IAAWT,KAHvB,KAcGS,MA9CP,mpBA4RJ,OA5FAnB,qBAAU,WACR,GAAII,EACF,GAAIjB,EAAMqC,MAAO,SAGW,EAFpBC,EAAE,UAAGtC,EAAMqC,MAAM,UAAf,aAAG,EAAgBxG,MAE3B,GADA6F,EAAaY,GACb,UAAItC,EAAMqC,MAAM,UAAhB,aAAI,EAAgBE,KAElB,YADAf,EAAgB,UAACxB,EAAMqC,MAAM,UAAb,aAAC,EAAgBE,MAI7B,OAANrB,QAAM,IAANA,KAAQrH,SAAQ,SAACwI,GACfA,EAAMxI,SAAQ,SAAC8B,GAAc,MACM,GAAzB,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAM6G,YAAN,eAAYC,YAAaH,GAC3Bd,EAAgB,OAAC7F,QAAD,IAACA,GAAD,UAACA,EAAM6G,YAAP,aAAC,EAAYE,mBAKnChB,GAAc,KAGjB,CAAC1B,IAwEF,SAAK7J,UAAU,aACb,OAAGA,UAAU,QAAb,gBACA,SAAKA,UAAU,aACFwL,EAAVV,GAAiDF,GACjDG,EAxMH,2DACGA,QADH,IACGA,OADH,EACGA,EAAQxF,KAAI,SAAC2G,EAAqBvF,GAAkB,gBACnD,OACE,SAOE7C,IAAG,UAAEoI,EAAM,UAAR,iBAAE,EAAUG,YAAZ,aAAE,EAAgBE,OAPvB,6BACa9J,IAAW,sBAAD,iBACGyJ,EAAM,UADT,iBACG,EAAUG,YADb,aACG,EAAgBE,QACtC,CACE,aAAa,UAAAL,EAAM,UAAN,mBAAUG,YAAV,eAAgBE,UAAWnB,KAJ9C,KASGc,EAAM3G,KAAI,SAACC,GACV,OAAkB,OAAdA,EAAKuE,KAEL,SAA+BjG,IAAK0B,EAAK6G,KAAKC,SAA9C,0CACE,OACExI,IAAK0B,EAAK6G,KAAKC,SAIfE,MAAOhH,EAAK6G,KAAKI,WACjBhB,QAAS,WACPF,EAAa/F,EAAK6G,KAAKC,UACvBN,YAAiB,YAAa,CAC5BU,SAAU,mBACVJ,SAAU,GAAF,OAAK9G,EAAK6G,KAAKC,UACvBG,WAAYjH,EAAK6G,KAAKI,aAExB,IAAIf,EAAOnM,OAAOgE,SAASoI,SACvBnG,EAAK6G,KAAKC,WAAahB,IACzBI,GAAQ,oBAAJ,OAAwBlG,EAAK6G,KAAKC,SAAlC,iBAAmD9G,EAAK6G,KAAKI,WAA7D,iBAAgFrB,IAEtFH,EAAO3F,KAAKoG,EAAMA,IAjBtB,6BAEajJ,IAAW,8BAA+B,CACnDmJ,OAAQpG,EAAK6G,KAAKC,WAAahB,KAHnC,KAoBE,EAAC,IAAD,CACE9M,IAAKgH,EAAK6G,KAAKM,WAAa,GAC5BzL,IAAKsE,EAAK6G,KAAKI,WACf/N,MAAO,IACPC,OAAQ,IACRmC,MAAM,IAER,sCAAO0E,EAAK6G,KAAKI,cAKlB,YAhDjB,ovBAgIA,oDACE,SAIE3I,IAAI,SAJN,6BACarB,IAAW,qBAAsB,CAC1C,YAA+B,WAAlB2I,KAFjB,KAMG,IAAI7O,MAAM,IAAIqQ,UAAKvQ,GAAWkJ,KAAI,SAACC,EAAMmB,GACxC,OACE,SAA+B7C,IAAI,SAAnC,0CACE,OACEA,IAAG,gBAAW6C,GADhB,0DAIE,8CACA,qDAfZ,+nB,4IC5QOkG,G,oBAAU,WAAgD,IAA/CC,EAA+C,uDAApC,GAAIC,EAAgC,uDAArB,eAAMC,EAAe,uDAAN,EAC/D,OAAOC,MAAMC,YAAO,yCAA0C,CAC5DC,OAAQ,OACRC,QAAS,CACP,eAAgB,qCAElBC,KAAM,UAAF,OAAYL,EAAZ,gCACFA,EAAS,EAAI,EADX,sBAEUM,mBAAmBP,GAF7B,YAE0CD,KAC7CS,KARI,uCAQC,WAAOrE,GAAP,eAAAnB,EAAA,6EACamB,QADb,IACaA,OADb,EACaA,EAAKsE,OADlB,UAEe,KAAb,QADFC,EADA,cAEE,IAAJA,OAAA,EAAAA,EAAMC,QAFJ,gDAGGD,QAHH,IAGGA,OAHH,EAGGA,EAAMA,MAHT,gCAKC,MALD,2CARD,yDAiBIE,EAAqB,SAAC9D,GACjC,OAAOzN,OAAOwR,QAAQ/D,GACnB/D,QAAO,gBAAI7C,EAAJ,4BAAiBA,GAASA,EAAM9D,OAAS,KAChDoG,KAAI,YAAkB,uBAAhBzB,EAAgB,KAAXb,EAAW,KACrB,OAAKA,EAGL,UAAUa,EAAV,YAAiBb,EAAMsC,KAAI,SAACC,GAAD,OAAUA,EAAKE,SAAOxB,KAAK,MAF7C,MAIVA,KAAK,M,oBCSJ2J,EAAOnN,EAAQ,QACfoN,EAAapN,EAAQ,QACrBqN,EAAQrN,EAAQ,QAEP,SAASsN,EAAT,GAAkC,IAAfC,EAAe,EAAfA,KAAe,EAEnBjD,qBAAWZ,GAA/BP,EAFuC,EAEvCA,MAAOS,EAFgC,EAEhCA,SAETyC,EAAWmB,eAAiB,GAE5B1J,EAAQ2J,iBAAO,GAEfnB,EAASmB,iBAAO,GARyB,EAUjBhD,oBAAS,GAAhCiD,EAVwC,KAU/BC,EAV+B,OAYjBlD,mBAAmB,CAC/CmD,OAAQ,GACRC,kBAAclS,IAFTmS,EAZwC,KAY/BC,EAZ+B,KAoBzCC,EAAYC,uBAAY,WAC5B,OAAOhB,EAAmB9D,KACzB,CAACA,IASJ,IAAMgD,EAAU8B,uBAAY,WAE1B,OADAN,GAAW,GACJpB,YAAMC,YAAO,yCAA0C,CAC5DC,OAAQ,OACRC,QAAS,CACP,eAAgB,qCAElBC,KAAM,UAAF,OAAYL,EAAOzK,QAAnB,gCACFyK,EAAOzK,QAAU,EAAI,EADnB,sBAEU+K,mBAAmBP,GAF7B,YAE0C2B,SAE/C,CAAC3B,EAAU2B,IA8Id,SAASE,EAAWnB,EAAiB9G,GAAe,kBArG7BwF,EAAY9I,EAAcwL,EAsG/C,OACE,QACE/K,IAAG,cAAS6C,GADd,sCAqIgCjG,EAAQ,YArIxC,2GAIE,EAAC,IAAD,CACEoD,IAAK6C,EACL+E,KAAI,gCAA2B+B,EAAKtB,KAAL,UAAWsB,EAAKpB,YAAhB,aAAW,EAAWyC,YACrDC,GAAE,uBAAkBtB,EAAKtB,KAAL,UAAWsB,EAAKpB,YAAhB,aAAW,EAAWyC,aAE1C,OACEhL,IAAG,cAAS6C,GAEZqI,OAAO,SACPvD,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,0BACVuC,gBAAiBxB,EAAKyB,YACtBC,cAAe,GAAF,cAAK1B,QAAL,IAAKA,OAAL,EAAKA,EAAMtB,IACxBG,SAAU,GAAF,cAAKmB,QAAL,IAAKA,OAAL,EAAKA,EAAMnB,UACnBG,YAAgB,OAAJgB,QAAI,IAAJA,OAAA,EAAAA,EAAMhB,aAAc,MAVtC,sCA4H4B/L,EAAQ,YA5HpC,cAcE,6CA8G0BA,EAAQ,YA9GlC,iPAUE,EAAC,IAAD,CACElC,IAAKiP,EAAK2B,UACV1Q,MAAO,IACPC,OAAQ,IACR6B,MAAO,CACLH,SAAU,WACVgP,IAAK,MACLC,KAAM,MACN5Q,MAAO,OACP6Q,UAAW,yBAEbzO,MAAM,EACNK,cAAe4M,KAGnB,OAEEvB,MAAOiB,EAAKyB,cAAL,UAAoBzB,EAAKpB,YAAzB,aAAoB,EAAWmD,aAFxC,sCAqF0B9O,EAAQ,YArFlC,aAIG+M,EAAKyB,cAAL,UAAoBzB,EAAKpB,YAAzB,aAAoB,EAAWmD,cAElC,+CA+E0B9O,EAAQ,YA/ElC,eACE,gDA8EwBA,EAAQ,YA9EhC,aACC+M,EAAKgC,WAAa,EACjB,oBACE,gDA2EoB/O,EAAQ,YA3E5B,UAAyB+M,EAAKgC,YAC9B,+CA0EoB/O,EAAQ,YA1E5B,eACE,EAAC,UAAD,CACEuF,SAAU4H,EACV3H,eAAgB4H,EAChB9N,UAAU,QACVmG,MAAOsH,EAAKgC,WACZrJ,SAAU,EACVC,UAAW,GACXC,WAAY,OAKlB,gDA6DsB5F,EAAQ,YA7D9B,0CAGJ,6CA0D0BA,EAAQ,YA1DlC,UACG+M,EAAKiC,eAAL,UAAqBjC,EAAKpB,YAA1B,aAAqB,EAAWqD,kBAnLtBvD,EAwLfsB,EAAKtB,KAAL,UAAWsB,EAAKpB,YAAhB,aAAW,EAAWyC,WAxLKzL,EAuLf,UAEZoK,EAAKpB,YAFO,aAEZ,EAAWmD,YAzL8BX,EA0LzCpB,EAAKoB,QAxLT,mFACE,EAAC,IAAD,CACE/K,IAAK,IACL4H,KAAI,2BAAsBS,EAAtB,eAA+BwD,YAAM,uBACzCZ,GAAE,kBAAa5C,EAAb,eAAsBwD,YAAM,wBAE9B,OACEX,OAAO,SAEPlL,IAAG,cAASqI,GACZV,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,sBACVyC,cAAe,GAAF,OAAKhD,GAClB8C,gBAAiB5L,EACjBuM,YAAa,wBATnB,gFAgBF,EAAC,IAAD,CACE9L,IAAK,IACL4H,KAAI,mDAA8CS,GAClD4C,GAAE,uBAAkB5C,EAAlB,qBAEF,OACE6C,OAAO,SAEPvD,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,sBACVyC,cAAe,GAAF,OAAKhD,GAClB8C,gBAAiB5L,EACjBuM,YAAa,kBARnB,8EAeF,EAAC,IAAD,CACE9L,IAAK,IACL4H,KAAI,8BAAyBmD,GAC7BE,GAAE,8BAAyBF,IAE3B,OACEG,OAAO,SAEPvD,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,sBACVyC,cAAe,GAAF,OAAKhD,GAClB8C,gBAAiB5L,EACjBuM,YAAa,kBARnB,8EA/CJ,qfAqGA,gCAqIgClP,EAAQ,UArIxC,28BAqIgCA,EAAQ,QArIxC,gjBA4KJ,SAASmP,EAAepK,EAAoBkB,GAC1C,QAAKlB,KAIAoE,EAAMpE,EAAO3B,MAAkB,IAAV6C,MAIxBkD,EAAMpE,EAAO3B,OACb+F,EAAMpE,EAAO3B,KAAKhH,MAAK,SAAC0I,GAAD,OAAUA,EAAKE,QAAUD,EAAOC,WAO3D,OA3UAgF,qBAAU,WACRsC,EAAOzK,QAAU,EACbwK,GACFF,IACGU,MAAK,SAACE,GACe,IAAhBA,EAAKC,SACPlJ,EAAMjC,QAAUkL,EAAKA,KAAKc,aAC1BE,EAAWhB,EAAKA,OAElBY,GAAW,MAEZyB,OAAM,SAACC,GACN1B,GAAW,QAIhB,CAACtB,EAAUF,IA4TZ,EAAC,IAAMmD,SAAP,KACE,wCACE,6CAA0BxB,EAAQD,cADpC,wCAEE,gDACGN,EAAK1I,KAAI,SAACC,EAAkBmB,GAC3B,OACE,UACE7C,IAAK0B,EAAK2E,KACV8F,KAAK,SAKLxE,QAAS,SAAClE,GACRA,EAAEwE,kBACFC,YAAiB,YAAa,CAC5BU,SAAU,uBACVkD,YAAapK,EAAK2E,OAEpBG,EAAS,CACPP,KAAM,kBACNE,QAAS,CACPnG,IAAK0B,EAAK1B,IACVqG,KAAM3E,EAAK2E,KACXzE,MAAOF,EAAKE,UAlBpB,iDAG2BjD,IAAW,CAClCmJ,OAAQiE,EAAerK,EAAMmB,GAC7B,aAAcA,EAAQ,MAkBvBnB,EAAK2E,WAMU,IAAzBqE,EAAQD,cACP,+GAEF,+CACE,EAAC,IAAD,CACEH,QAASA,EACT8B,MAAK1L,EAAMjC,QAAU,IAAM,GAC3B4N,gBApWR,WACE3L,EAAMjC,SAAW,GACjByK,EAAOzK,SAAW,EAClBsK,IACGU,MAAK,SAACE,GACe,IAAhBA,EAAKC,SACP1B,YAAiB,qBAAsB,CACrCoE,cAAe3C,EAAKA,KAAKa,OAAOnP,SAElCsP,EAAW,CACTF,aAAcd,EAAKA,KAAKc,aACxBD,OAAQ,GAAF,mBAAME,EAAQF,QAAd,YAAyBb,EAAKA,KAAKa,YAG7CD,GAAW,MAEZyB,OAAM,WACLzB,GAAW,QAqVT,yFACGG,EAAQF,OAAO/I,KAAI,SAACC,EAAiBmB,GAAlB,OAClBiI,EAAWpJ,EAAMmB,OAGpByH,GAAW,EAAC,IAAD,QAjDlB,6zB,wBC1ZEP,EAAOnN,EAAQ,QACfoN,EAAapN,EAAQ,QACrBqN,EAAQrN,EAAQ,QAiHP,SAASkO,EAAWnB,EAAiB9G,GAAe,kBArG5CwF,EAAY9I,EAAcwL,EAsG/C,OACE,QACE/K,IAAG,cAAS6C,GADd,sCAqIgCjG,EAAQ,YArIxC,2GAIE,EAAC,IAAD,CACEoD,IAAK6C,EACL+E,KAAI,gCAA2B+B,EAAKtB,KAAL,UAAWsB,EAAKpB,YAAhB,aAAW,EAAWyC,YACrDC,GAAE,uBAAkBtB,EAAKtB,KAAL,UAAWsB,EAAKpB,YAAhB,aAAW,EAAWyC,aAE1C,OACEhL,IAAG,cAAS6C,GAEZqI,OAAO,SACPvD,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,0BACVuC,gBAAiBxB,EAAKyB,YACtBC,cAAe,GAAF,cAAK1B,QAAL,IAAKA,OAAL,EAAKA,EAAMtB,IACxBG,SAAU,GAAF,cAAKmB,QAAL,IAAKA,OAAL,EAAKA,EAAMnB,UACnBG,YAAgB,OAAJgB,QAAI,IAAJA,OAAA,EAAAA,EAAMhB,aAAc,MAVtC,sCA4H4B/L,EAAQ,YA5HpC,cAcE,6CA8G0BA,EAAQ,YA9GlC,iPAUE,EAAC,IAAD,CACElC,IAAKiP,EAAK2B,UACV1Q,MAAO,IACPC,OAAQ,IACR6B,MAAO,CACLH,SAAU,WACVgP,IAAK,MACLC,KAAM,MACN5Q,MAAO,OACP6Q,UAAW,yBAEbzO,MAAM,EACNK,cAAe4M,KAGnB,OAEEvB,MAAOiB,EAAKyB,cAAL,UAAoBzB,EAAKpB,YAAzB,aAAoB,EAAWmD,aAFxC,sCAqF0B9O,EAAQ,YArFlC,aAIG+M,EAAKyB,cAAL,UAAoBzB,EAAKpB,YAAzB,aAAoB,EAAWmD,cAElC,+CA+E0B9O,EAAQ,YA/ElC,eACE,gDA8EwBA,EAAQ,YA9EhC,aACC+M,EAAKgC,WAAa,EACjB,oBACE,gDA2EoB/O,EAAQ,YA3E5B,UAAyB+M,EAAKgC,YAC9B,+CA0EoB/O,EAAQ,YA1E5B,eACE,EAAC,UAAD,CACEuF,SAAU4H,EACV3H,eAAgB4H,EAChB9N,UAAU,QACVmG,MAAOsH,EAAKgC,WACZrJ,SAAU,EACVC,UAAW,GACXC,WAAY,OAKlB,gDA6DsB5F,EAAQ,YA7D9B,0CAGJ,6CA0D0BA,EAAQ,YA1DlC,UACG+M,EAAKiC,eAAL,UAAqBjC,EAAKpB,YAA1B,aAAqB,EAAWqD,kBAnLtBvD,EAwLfsB,EAAKtB,KAAL,UAAWsB,EAAKpB,YAAhB,aAAW,EAAWyC,WAxLKzL,EAuLf,UAEZoK,EAAKpB,YAFO,aAEZ,EAAWmD,YAzL8BX,EA0LzCpB,EAAKoB,QAxLT,mFACE,EAAC,IAAD,CACE/K,IAAK,IACL4H,KAAI,2BAAsBS,EAAtB,eAA+BwD,YAAM,uBACzCZ,GAAE,kBAAa5C,EAAb,eAAsBwD,YAAM,wBAE9B,OACEX,OAAO,SAEPlL,IAAG,cAASqI,GACZV,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,sBACVyC,cAAe,GAAF,OAAKhD,GAClB8C,gBAAiB5L,EACjBuM,YAAa,wBATnB,gFAgBF,EAAC,IAAD,CACE9L,IAAK,IACL4H,KAAI,mDAA8CS,GAClD4C,GAAE,uBAAkB5C,EAAlB,eAEF,OACE6C,OAAO,SAEPvD,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,sBACVyC,cAAe,GAAF,OAAKhD,GAClB8C,gBAAiB5L,EACjBuM,YAAa,kBARnB,8EAeF,EAAC,IAAD,CACE9L,IAAK,IACL4H,KAAI,8BAAyBmD,GAC7BE,GAAE,8BAAyBF,IAE3B,OACEG,OAAO,SAEPvD,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,sBACVyC,cAAe,GAAF,OAAKhD,GAClB8C,gBAAiB5L,EACjBuM,YAAa,kBARnB,8EA/CJ,qfAqGA,gCAqIgClP,EAAQ,UArIxC,28BAqIgCA,EAAQ,QArIxC,gjB,wBCrHW,SAASsN,GAAT,GAAwC,IAArBqC,EAAqB,EAArBA,WAChC,OACE,EAAC,IAAML,SAAP,KAC+B,IAA5BK,EAAW9B,cACV,+GAEF,+CACE,yFACG8B,EAAW/B,OAAO/I,KAAI,SAACC,EAAiBmB,GAAlB,OACrBiI,EAAWpJ,EAAMmB,QAPzB,+M,iUCCW,SAAS2J,GAAT,GAAwC,IAAtBC,EAAsB,EAAtBA,WAAsB,EACzBrO,IAAM8I,WAAWZ,GAArCP,EAD6C,EAC7CA,MACFoB,GAF+C,EACtCX,SACAY,uBACT0C,EAAUxR,OAAOwR,QAAQ/D,GACzB2G,EAAa,CAAC,OAAQ,gBACtBpL,EAAmBlD,IAAMuO,SAAQ,WACrC,OAAOF,EAAWhL,KAAI,SAAAC,GACpB,OAAOjJ,MAAM+K,KACX,IAAIoJ,IAAIlL,EAAKiI,KAAKlI,KAAI,SAAAC,GAAI,OAAIA,EAAK1B,OAAKgC,QAAO,SAAAN,GAAI,QAAMA,YAG5D,CAAC+K,IAEJ,OACG3C,GACAA,EAAQzO,QACRyO,EAAQ9H,QAAO,gBAAEhC,EAAF,2BAAwC,IAA7B0M,EAAWnS,QAAQyF,MAAa3E,OAM3D,+CACE,yEACA,iDACG/C,OAAOwR,QAAQ/D,GAAOtE,KAAI,YAAkB,uBAAhBzB,EAAgB,KAAXb,EAAW,KAC3C,OAAIuN,EAAWnS,QAAQyF,IAAQ,EACtB,KAEJb,GAAUA,EAAM9D,OAGd8D,EAAMsC,KAAI,SAAAC,GAAI,OACnB,WACE1B,IAAK0B,EAAK2E,KAEVsB,QAAS,SAAClE,GAAmD,YAC3DA,EAAEwE,kBACFxE,EAAEuE,iBACF,IAAM6E,E,2WAAY,IACb9G,UAEE8G,EAAU7M,GAEjBmH,EAAO3F,KAAP,wBACmBJ,aAASyL,EAAWvL,IADvC,OACmE,UAARtB,EAAkB,GAAlB,UAAuBvE,cAAvB,iBAAuB,EAAQgE,gBAA/B,aAAuB,EAAkBD,QADpG,wBAGmB4B,aAASyL,EAAWvL,IAHvC,OAGmE,UAARtB,EAAkB,GAAlB,UAAuBvE,cAAvB,iBAAuB,EAAQgE,gBAA/B,aAAuB,EAAkBD,UAdxG,sCAmBGkC,EAAK2E,KACN,wEAvBK,SA4Bb,4CACE,WAEEsB,QAAS,WACPO,YAAiB,YAAa,CAC5BU,SAAU,mBACVkD,YAAa,iBAEf3E,EAAO3F,KAAP,8EAPJ,0DArCJ,o+BAJO,K,qDCjBI,SAASsL,GAAT,GAUJ,IATTnF,EASS,EATTA,QASS,IARToF,aAQS,MARD,CACN,CACEnL,MAAO,QAMF,MAHTqE,YAGS,MAHF,QAGE,MAFT+G,gBAES,MAFE,SAEF,MADTC,YACS,MADF,EACE,EAEHC,EAAW9O,eAAkB,SAACe,GAClC,MAAa,UAAT8G,EACKkH,SAAShO,EAAO,IAElBiO,WAAWA,WAAWjO,GAAOkO,QAAQ,KAAO,IAClD,CAACpH,IAPK,EASa7H,WAAuB,IATpC,mBASFkP,EATE,KASGC,EATH,OAUenP,WAAuB,IAVtC,mBAUFoP,EAVE,KAUIC,EAVJ,OAWmBrP,aAAiBkI,GAArCP,EAXC,EAWDA,MAXC,EAWMS,SACfpI,aAAgB,WACdmP,EAAOR,EAAM,GAAGnL,MAAMpI,MAAM,KAAK,IACjC,IAAMgU,EACJL,SAASJ,EAAM,GAAGnL,MAAMpI,MAAM,KAAK,GAAI,IAAM,EACzCuT,EAAM,GAAGnL,MAAMpI,MAAM,KAAK,GAC1B,GACNiU,EAAQD,KACP,CAACT,EAAM,GAAGnL,QAgDb,IAAM8L,EAAWtP,WAAc,WAC7B,MAAa,UAAT6H,EACK,GAGL0H,QAAQP,WAAWE,KAASK,QAAQP,WAAWI,IAC7CJ,WAAWI,GAAQ,GAAKJ,WAAWE,GAAO,EACrC,oDAELF,WAAWE,GAAO,GAAKF,WAAWI,GAAQ,EACrC,oDAEF,GAEF,KACN,CAACF,EAAKE,IAEHI,EAAWxP,WAAc,WAC7B,OAAOuP,QAAQP,WAAWE,KAASK,QAAQP,WAAWI,MACrD,CAACF,EAAKE,IAET,OACE,6CACE,YACErO,MAAOmO,EACPrH,KAAK,SACL4H,SAAU,SAAApK,GACR8J,EAAO9J,EAAEyH,OAAO/L,QAJpB,6BAOA,iDACA,YACEA,MAAOqO,EACPvH,KAAK,SACL4H,SAAU,SAAApK,GACRgK,EAAQhK,EAAEyH,OAAO/L,QAJrB,6BAOA,4CAAwB6N,GAAY,UACnCU,GAAqB,eAATzH,GACX,kDAA8ByH,GAEhC,WAIE/F,QA7FN,WAAuB,UACrB,IAAI+F,EAAJ,CAGA,IAAIrH,EAAO,GACPyH,EAAOZ,EAASI,GAAO,MAAQ,EAC/BS,EAAQb,EAASM,GAAQ,MAAQ,EAMrC,GAJKO,GAAkB,eAAT9H,IACZ8H,EAAQ,GAGLD,GAASC,EAAd,CAIA,GAAKD,EAEE,GAAKC,EAEL,CACL,GAAIA,EAAQD,EAAM,OACC,CAACA,EAAMC,GAAfD,EADO,KAEhBL,EAAQ,GAAD,OADLM,EADc,OAGhBR,EAAO,GAAD,OAAIO,IAEZzH,EAAO,GAAH,OAAMyH,EAAN,YAAcC,GAAd,OAAsBf,QAP1B3G,EAAO,GAAH,OAAMyH,GAAN,OAAad,EAAb,qBAFJ3G,EAAO,GAAH,OAAM0H,GAAN,OAAcf,EAAd,gBAYN,IAAMpL,EAAQ,GAAH,OAAMkM,GAAQ,EAAd,YAAmBC,IAAU,GAEpC9H,IAAI,OACNF,QADM,IACNA,GADM,UACNA,EAAQE,UADF,aACN,EAAgB,KAChBrE,KAAU,OAAAmE,QAAA,IAAAA,GAAL,UAAKA,EAAQE,UAAb,iBAAK,EAAgB,UAArB,aAAK,UAIZ0B,EACE,CACE3H,IAAKiG,EACLrE,MAAOA,EACPyE,QAEF4G,MA8CA,6BACatO,IAAW,SAAU,CAC9BmJ,OAAQ8F,IAAaF,KAFzB,qBApBF,ovC,yBC9FW,SAASM,GAAT,GAAgE,IAA1C9H,EAA0C,EAA1CA,QAAS/G,EAAiC,EAAjCA,MAAO0O,EAA0B,EAA1BA,SAAU5H,EAAgB,EAAhBA,KAAgB,EAC/CoB,mBAASlI,GAAhCV,EADsE,KAC7DwP,EAD6D,KAO7E,OAJArH,qBAAU,WACRqH,EAAW9O,KACV,CAACA,IAGF,+CAmD0BvC,EAAQ,QAQRA,EAAQ,YA3DlC,qBACGsJ,EAAQzE,KAAI,SAACC,EAAemB,GAC3B,OACE,QAIE8E,QAAS,SAACuG,GAER,GADAA,EAAMjG,kBACFxJ,GAAWiD,EAAKE,MAMlB,OALAqM,EAAW,SACH,OAARJ,QAAQ,IAARA,KAAW,CACTjM,MAAO,IACPyE,KAAM,kBAIV4H,EAAWvM,EAAKE,OACR,OAARiM,QAAQ,IAARA,KAAWnM,IAEb1B,IAAG,uBAAkB6C,GAjBvB,qCAgDoBjG,EAAQ,QAQRA,EAAQ,YAxD5B,KACa+B,IAAW,eAAgB,CACpCwP,SAAU1P,GAAWiD,EAAKE,SAAWqE,GAAQA,KAAS,OAAAvE,QAAA,IAAAA,OAAL,EAAKA,EAAM1B,SAFhE,KAmBE,gDA6BkBpD,EAAQ,QAQRA,EAAQ,YArC1B,UACA,gDA4BkBA,EAAQ,QAQRA,EAAQ,YApC1B,gBAA+B8E,EAAK2E,UAvB5C,gCAmD0BzJ,EAAQ,QAQRA,EAAQ,UA3DlC,wiBAmD0BA,EAAQ,QAnDlC,gOA2D0BA,EAAQ,QA3DlC,gC,yBCbEwR,GAAa,CACjB,CACE/H,KAAM,eACNrG,IAAK,cACL4B,MAAO,EACP3F,SAAU,CACR,CACE2F,MAAO,MACPyE,KAAM,eACNrG,IAAK,eAEP,CACE4B,MAAO,IACPyE,KAAM,qBACNrG,IAAK,sBAEP,CACE4B,MAAO,IACPyE,KAAM,qBACNrG,IAAK,sBAEP,CACE4B,MAAO,IACPyE,KAAM,2BACNrG,IAAK,sBAEP,CACE4B,MAAO,IACPyE,KAAM,qBACNrG,IAAK,sBAEP,CACE4B,MAAO,IACPyE,KAAM,2BACNrG,IAAK,sBAEP,CACE4B,MAAO,IACPyE,KAAM,qBACNrG,IAAK,wBAIX,CACEqG,KAAM,MACNrG,IAAK,cACL4B,MAAO,EACP3F,SAAU,CACR,CACE2F,MAAO,MACPyE,KAAM,eACNrG,IAAK,eAEP,CACE4B,MAAO,KACPyE,KAAM,kBACNrG,IAAK,sBAEP,CACE4B,MAAO,KACPyE,KAAM,wBACNrG,IAAK,sBAEP,CACE4B,MAAO,KACPyE,KAAM,kBACNrG,IAAK,sBAEP,CACE4B,MAAO,KACPyE,KAAM,wBACNrG,IAAK,sBAEP,CACE4B,MAAO,KACPyE,KAAM,kBACNrG,IAAK,wBAIX,CACEqG,KAAM,MACNrG,IAAK,cACL4B,MAAO,EACP3F,SAAU,CACR,CACE2F,MAAO,MACPyE,KAAM,eACNrG,IAAK,eAEP,CACE4B,MAAO,KACPyE,KAAM,kBACNrG,IAAK,sBAEP,CACE4B,MAAO,KACPyE,KAAM,wBACNrG,IAAK,sBAEP,CACE4B,MAAO,KACPyE,KAAM,kBACNrG,IAAK,sBAEP,CACE4B,MAAO,KACPyE,KAAM,kBACNrG,IAAK,wBAIX,CACEqG,KAAM,eACNrG,IAAK,cACL4B,MAAO,GAET,CACEyE,KAAM,eACNrG,IAAK,cACL4B,MAAO,GAET,CACEyE,KAAM,eACNrG,IAAK,cACL4B,MAAO,GAET,CACEyE,KAAM,eACNrG,IAAK,cACL4B,MAAO,SACPyM,WAAY,IACZpS,SAAU,CACR,CACE2F,MAAO,SACPyE,KAAM,eACNrG,IAAK,eAEP,CACE4B,MAAO,KACPyE,KAAM,eACNrG,IAAK,eAEP,CACE4B,MAAO,IACPyE,KAAM,eACNrG,IAAK,eAEP,CACE4B,MAAO,IACPyE,KAAM,eACNrG,IAAK,kBAkBE,SAASsO,GAAT,GAGJ,IAFTC,EAES,EAFTA,kBAES,KADTxC,eAE4B3N,IAAM8I,WAAWZ,IAArCP,EADC,EACDA,MADC,KACMS,SAC2Ba,mBAAS,KAF1C,aAGyBA,oBAAU,IAHnC,UAkBT,SAASmH,EAAmB9M,GAC1B,SAAKqE,EAAM0I,cAAgB1I,EAAM2I,sBAG7B3I,EAAM0I,YACD1I,EAAM0I,YAAYE,MAAK,SAAChN,GAAgB,UACG,QAAhD,OAAQ,OAAJD,QAAI,IAAJA,GAAA,UAAAA,EAAME,aAAN,mBAAaC,kBAAb,eAAyBtH,QAAQ,OAAQ,GAEzC,UAAAmH,EAAKE,MACFC,kBADH,mBAEIrI,MAAM,YAFV,eAGIe,QAHJ,OAGYoH,QAHZ,IAGYA,GAHZ,UAGYA,EAAQC,aAHpB,aAGY,EAAeC,cAAe,IACpC,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQC,aAAR,eAAeC,cAAeH,EAAKE,MAAMC,YAGhC,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQC,aAAR,eAAeC,cAAeH,EAAKE,MAAMC,cAIhDkE,EAAM2I,oBAAsBhN,EAAKzF,SAC5B8J,EAAM2I,mBAAmBC,MAAK,SAAChN,GAAD,OACnCD,EAAKzF,SAAS0S,MACZ,SAACC,GAAD,aACQ,OAANjN,QAAM,IAANA,GAAA,UAAAA,EAAQC,aAAR,eAAeC,cAAe+M,EAAMhN,MAAMC,YAC5B,uBAAd+M,EAAM5O,eALd,GAWF,SAAS6O,EAAkBnN,GACzB,OAAKqE,EAAM0I,aAAgB1I,EAAM2I,mBAG7B3I,EAAM0I,aAAeD,EAAmB9M,IAClC,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAME,aAAN,mBAAaC,kBAAb,eAAyBtH,QAAQ,OAAQ,EAC3C,OAAOwL,QAAP,IAAOA,GAAP,UAAOA,EAAO0I,mBAAd,iBAAO,EAAqB,UAA5B,aAAO,EAAyB7M,MAE3B,MAGLmE,EAAM2I,mBACD3I,EAAM2I,mBAAmB,GAAzB,WADT,EATS,GAE0C,QACD,IAoQpD,OACE,UAAKxS,UAAU,aACb,QAAGA,UAAU,QAAb,gBACA,UAAKA,UAAU,aA1Pf,gDAyI0BU,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,YA7LlC,YACE,UACEoD,IAAK,IAIL2H,QAAS,WACP4G,EACE,CACE3M,MAAO,IACPyE,KAAM,eACNrG,IAAK+F,EAAM0I,YAAc,cAAgB,sBAE3C1I,EAAM0I,YArFA,EACA,KAwEZ,sCAwIwB7R,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,YA5LhC,KAEa+B,IAAW,sCAAuC,CAC3DmJ,QAAS/B,EAAM0I,cAAgB1I,EAAM2I,sBAHzC,qBAkBA,+CAsHwB9R,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,YA1KhC,aACGwR,GAAW3M,KAAI,SAACgN,GAAD,eACd,SACEzO,IAAKyO,EAAY7M,MAQjB+F,QAAS,SAAClE,GACRA,EAAEuE,iBACFvE,EAAEwE,kBACFC,YAAiB,4BAA6B,CAC5CC,QAAS,WAEXoG,EACE,CACE3M,MAAO6M,EAAY7M,MACnByE,KAAMoI,EAAYpI,KAClBrG,IAAKyO,EAAYzO,KAhHjB,EACA,KA4FR,sCAoHoBpD,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,YAxK5B,KAEa+B,IAAW,mDAAD,OACgC8P,EAAY7M,OAC/D,CACEkG,OAAQ0G,EAAmBC,GAC3BK,YAAW,OAAEL,QAAF,IAAEA,GAAF,UAAEA,EAAaxS,gBAAf,aAAE,EAAuBZ,UAN1C,KA0BE,iDA0FkBuB,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,YA9I1B,+BAEI6R,EAAYJ,YAAcI,EAAY7M,SAG1C,iDAqFkBhF,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,YAzI1B,aAA4B6R,EAAYpI,OAC5B,OAAXoI,QAAW,IAAXA,GAAA,UAAAA,EAAaxS,gBAAb,eAAuBZ,SACtB,gDAmFgBuB,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,YAvIxB,iBACE,GAACoR,GAAD,CACE9H,QAAO,OAAEuI,QAAF,IAAEA,OAAF,EAAEA,EAAaxS,SACtB4R,SAAU,SAACnM,GAEPA,IACgB,QAAfA,EAAKE,OAAmBF,EAAKE,MAAMrH,QAAQ,MAAQ,GAEpDgU,EACE,CACE3M,MAAOF,EAAKE,MACZyE,KAAM3E,EAAK2E,KACXrG,IAAK0B,EAAK1B,KAEC,gBAAb0B,EAAK1B,IA5IX,EACA,GA8ImB,gBAAb0B,EAAK1B,IA9IX,GADA,GAmJEuO,EACE,CACE3M,MAAO6M,EAAY7M,MACnByE,KAAMoI,EAAYpI,KAClBrG,IAAKyO,EAAYzO,KAEN,gBAAb0B,EAAK1B,IAzJT,EACA,GAyJiB,gBAAb0B,EAAK1B,IAzJT,GADA,IA6JAiG,KAjJZF,EAAM0I,YACD,cAGL1I,EAAM2I,mBACD,qBAGF,GA0ISvP,MAAO0P,EAAkBJ,WAtFvC,iCAyI0B7R,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,QAIRA,EAAQ,UA7LlC,4/BAyI0BA,EAAQ,QAzIlC,8FA6I0BA,EAAQ,QA7IlC,8FAiJ0BA,EAAQ,QAjJlC,mIAqJ0BA,EAAQ,QArJlC,8FAyJ0BA,EAAQ,QAzJlC,mIA6J0BA,EAAQ,QA7JlC,8FAiK0BA,EAAQ,QAjKlC,mIAqK0BA,EAAQ,QArKlC,8FAyK0BA,EAAQ,QAzKlC,mIA6K0BA,EAAQ,QA7KlC,8FAiL0BA,EAAQ,QAjLlC,mIAqL0BA,EAAQ,QArLlC,8FAyL0BA,EAAQ,QAzLlC,mIA6L0BA,EAAQ,QA7LlC,i2CCxPC,IAAMuN,GAAO,CAClB,CAAEnK,IAAK,OAAQqG,KAAM,2BAAQzE,MAAO,OACpC,CAAE5B,IAAK,OAAQqG,KAAM,uCAAUzE,MAAO,aACtC,CAAE5B,IAAK,OAAQqG,KAAM,uCAAUzE,MAAO,cAI3B6K,GAAiC,CAC5C,CACE,SAAY,SACZ,MAAS,eACT,KAAQ,CACN,CACE,MAAS,IACT,KAAQ,eACR,IAAO,SAET,CACE,MAAS,OACT,KAAQ,uBACR,IAAO,SAET,CACE,MAAS,QACT,KAAQ,cACR,IAAO,SAET,CACE,MAAS,QACT,KAAQ,cACR,IAAO,SAET,CACE,MAAS,QACT,KAAQ,cACR,IAAO,SAET,CACE,MAAS,QACT,KAAQ,cACR,IAAO,SAET,CACE,MAAS,QACT,KAAQ,cACR,IAAO,SAET,CACE,MAAS,QACT,KAAQ,uBACR,IAAO,SAET,CACE,MAAS,GACT,KAAQ,qBACR,IAAO,WAIb,CACE,SAAY,MACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,GACP,MAAS,KAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,MACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,MACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,UAEX,CACE,MAAS,KACT,KAAQ,eACR,IAAO,gBAGX,MAAS,gBAEX,CACE,SAAY,SACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,GACP,MAAS,KAEX,CACE,KAAQ,eACR,IAAO,UACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,UACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,UACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,UACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,UACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,UACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,UACP,MAAS,WAGb,MAAS,gBAEX,CACE,SAAY,eACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,eACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,eACP,MAAS,IAGb,MAAS,sBAEX,CACE,SAAY,SACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,GACP,MAAS,KAEX,CACE,KAAQ,eACR,IAAO,mBACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,mBACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,mBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,mBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,mBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,mBACP,MAAS,GAEX,CACE,KAAQ,qBACR,IAAO,mBACP,MAAS,IAGb,MAAS,gBAEX,CACE,SAAY,eACZ,KAAQ,CACN,CACE,KAAQ,wBACR,IAAO,aACP,MAAS,SAEX,CACE,KAAQ,WACR,IAAO,aACP,MAAS,WAEX,CACE,KAAQ,WACR,IAAO,aACP,MAAS,WAEX,CACE,KAAQ,WACR,IAAO,aACP,MAAS,WAEX,CACE,KAAQ,WACR,IAAO,aACP,MAAS,WAEX,CACE,KAAQ,WACR,IAAO,aACP,MAAS,WAEX,CACE,KAAQ,mBACR,IAAO,aACP,MAAS,WAGb,MAAS,gBAEX,CACE,SAAY,YACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,GACP,MAAS,KAEX,CACE,KAAQ,eACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,qBACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,qBACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,6CACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,qBACR,IAAO,YACP,MAAS,SAEX,CACE,KAAQ,2CACR,IAAO,YACP,MAAS,KAGb,MAAS,gBAEX,CACE,SAAY,SACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,GACP,MAAS,KAEX,CACE,KAAQ,UACR,IAAO,aACP,MAAS,GAEX,CACE,KAAQ,UACR,IAAO,aACP,MAAS,GAEX,CACE,KAAQ,UACR,IAAO,aACP,MAAS,GAEX,CACE,KAAQ,UACR,IAAO,aACP,MAAS,GAEX,CACE,KAAQ,UACR,IAAO,aACP,MAAS,GAEX,CACE,KAAQ,sBACR,IAAO,aACP,MAAS,OAGb,MAAS,sBAEX,CACE,SAAY,eACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,cACP,MAAS,IAGb,MAAS,4BAEX,CACE,SAAY,eACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,GACP,MAAS,KAEX,CACE,KAAQ,2BACR,IAAO,aACP,MAAS,GAEX,CACE,KAAQ,uCACR,IAAO,wBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,gBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,kBACP,MAAS,GAEX,CACE,KAAQ,uCACR,IAAO,uBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,mBACP,MAAS,GAEX,CACE,KAAQ,iCACR,IAAO,gBACP,MAAS,IAGb,MAAS,4BAEX,CACE,SAAY,eACZ,KAAQ,CACN,CACE,KAAQ,eACR,IAAO,GACP,MAAS,KAEX,CACE,KAAQ,2BACR,IAAO,qBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,SACP,MAAS,GAEX,CACE,KAAQ,uCACR,IAAO,4BACP,MAAS,GAEX,CACE,KAAQ,iCACR,IAAO,gBACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,8BACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,uBACP,MAAS,GAEX,CACE,KAAQ,iCACR,IAAO,kBACP,MAAS,GAEX,CACE,KAAQ,kBACR,IAAO,MACP,MAAS,IAGb,MAAS,4BAEX,CACE,SAAY,SACZ,MAAS,qBACT,KAAQ,CACN,CACE,MAAS,IACT,KAAQ,eACR,IAAO,cAET,CACE,MAAS,MACT,KAAQ,wBACR,IAAO,cAET,CACE,MAAS,QACT,KAAQ,gBACR,IAAO,cAET,CACE,MAAS,QACT,KAAQ,gBACR,IAAO,cAET,CACE,MAAS,QACT,KAAQ,gBACR,IAAO,cAET,CACE,MAAS,QACT,KAAQ,cACR,IAAO,cAET,CACE,MAAS,GACT,KAAQ,qBACR,IAAO,gBAIb,CACE,SAAY,OACZ,MAAS,2BACT,KAAQ,CACN,CACE,MAAS,IACT,KAAQ,qBACR,IAAO,sBAET,CACE,MAAS,IACT,KAAQ,qBACR,IAAO,sBAET,CACE,MAAS,IACT,KAAQ,2BACR,IAAO,sBAET,CACE,MAAS,IACT,KAAQ,qBACR,IAAO,sBAET,CACE,MAAS,IACT,KAAQ,2BACR,IAAO,sBAET,CACE,MAAS,IACT,KAAQ,qBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,kBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,wBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,kBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,wBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,kBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,kBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,wBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,kBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,kBACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,2BACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,2BACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,iCACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,2BACR,IAAO,sBAET,CACE,MAAS,KACT,KAAQ,iCACR,IAAO,wBAIb,CACE,SAAY,eACZ,MAAS,qBACT,KAAQ,CACN,CACE,MAAS,IACT,KAAQ,UACR,IAAO,iBAET,CACE,MAAS,IACT,KAAQ,UACR,IAAO,iBAET,CACE,MAAS,IACT,KAAQ,UACR,IAAO,iBAET,CACE,MAAS,IACT,KAAQ,UACR,IAAO,iBAET,CACE,MAAS,IACT,KAAQ,UACR,IAAO,iBAET,CACE,MAAS,KACT,KAAQ,sBACR,IAAO,mBAIb,CACE,SAAY,eACZ,MAAS,2BACT,KAAQ,CACN,CACE,MAAS,IACT,KAAQ,2BACR,IAAO,YAET,CACE,MAAS,YACT,KAAQ,2BACR,IAAO,YAET,CACE,MAAS,IACT,KAAQ,2BACR,IAAO,e,2CCvpBTsC,GAA0B,GAEjB,SAASC,GAAT,GAKJ,IAJT9I,EAIS,EAJTA,QACA3G,EAGS,EAHTA,KAGS,IAFTJ,aAES,MAFD4P,GAEC,EADTlB,EACS,EADTA,SACS,EACqBxG,mBAAmBlI,GAA1CV,EADE,KACOwP,EADP,KAOT,SAASgB,IAEP,IAFe,IACP5T,EAAW6K,EAAX7K,OACC0G,EAAI,EAAGA,EAAI1G,EAAQ0G,IAAK,CAC/B,IAAML,EAAOwE,EAAQnE,GAErB,GAAIL,EAAK1B,MAAQ4N,EAASlM,EAAK1B,KAC7B,OAAO,EAGX,OAAO,EAGT,SAAS4N,EAAS5N,GAChB,OAAW,OAAPvB,QAAO,IAAPA,OAAA,EAAAA,EAASlE,QAAQyF,KAAQ,EAjB/B4G,qBAAU,WACRqH,EAAW9O,KACV,CAACA,IAqBJ,IAAM+P,EAAkBrE,uBACtB,SAAC7K,GACC,IACS,EADLmP,EAAM,YAAI1Q,GACd,GAAIuB,EACF,aAAImP,SAAJ,aAAI,EAAK9T,OAAQ,CACf,IAAMwH,EAAQsM,EAAI5U,QAAQyF,GACtB6C,GAAS,EAEXsM,EAAIC,OAAOvM,EAAO,GAElBsM,EAAI3N,KAAKxB,QAGXmP,EAAI3N,KAAKxB,QAKTmP,EADEF,IACI,GAEA/I,EAAQzE,KAAI,SAACC,GAAD,OAAmBA,EAAK1B,OAGtC,OAAR6N,QAAQ,IAARA,KAAWsB,GACXlB,EAAWkB,KAEb,CAAC1Q,EAASwP,EAAYJ,IAGxB,OACE,+CAiD0BjR,EAAQ,QAIRA,EAAQ,YArDlC,uBACGsJ,EAAQzE,KAAI,SAACC,EAAemB,GAC3B,OACE,QAIE8E,QAAS,SAACuG,GACRA,EAAMjG,kBACNiH,EAAgBxN,EAAK1B,MACf0B,EAAK1B,IAAM4N,EAASlM,EAAK1B,KAAOiP,MACpC/G,YAAiB,YAAa,CAC5BU,SAAU,4BACVyG,kBAAmB9P,EACnB+P,mBAAoB5N,EAAK2E,QAI/BrG,IAAG,yBAAoB6C,GAfzB,qCA8CoBjG,EAAQ,QAIRA,EAAQ,YAlD5B,KACa+B,IAAW,iBAAkB,CACtCwP,SAAUzM,EAAK1B,IAAM4N,EAASlM,EAAK1B,KAAOiP,OAF9C,KAiBE,gDA6BkBrS,EAAQ,QAIRA,EAAQ,YAjC1B,UACC8E,EAAK2E,SArBd,gCAiD0BzJ,EAAQ,QAIRA,EAAQ,UArDlC,ofAiD0BA,EAAQ,QAjDlC,gIAqD0BA,EAAQ,QArDlC,gC,yBC5DE2S,GAAU,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAEtB,SAASC,GAAT,GAA8D,IAA7CjB,EAA6C,EAA7CA,kBACxBpH,GADqE,EAA1B4E,eAClC3E,uBAD4D,EAE/ChJ,IAAM8I,WAAWZ,GAArCP,EAFmE,EAEnEA,MAFmE,EAE5DS,SAYf,SAASiJ,EAAgB/N,GACvB,GAAsB,iBAAlBA,EAAKgO,SAA6B,aAEJ,IAD1B1P,EAAG,OAAG0B,QAAH,IAAGA,GAAH,UAAGA,EAAMiI,YAAT,iBAAG,EAAa,UAAhB,aAAG,MACZ,iBAAI5D,EAAM/F,UAAV,iBAAI,EAAa,UAAjB,aAAI,SACF,UAAO+F,EAAM/F,UAAb,iBAAO,EAAa,UAApB,aAAO,QAEF,IAIX,SAAS2P,EAAgBjO,GAEvB,GAAsB,iBAAlBA,EAAKgO,SAA6B,CAGpC,IAHoC,MAChC5O,EAAS,GACPzF,EAAM,OAAGqG,QAAH,IAAGA,GAAH,UAAGA,EAAMiI,YAAT,aAAG,EAAYtO,OAClB0G,EAAI,EAAGA,EAAI1G,EAAQ0G,IAAK,WACzB6N,EAAQ,OAAGlO,QAAH,IAAGA,GAAH,UAAGA,EAAMiI,YAAT,aAAG,EAAa5H,GACxB/B,EAAG,OAAG4P,QAAH,IAAGA,OAAH,EAAGA,EAAQ,KACpB,UAAI7J,EAAM/F,UAAV,iBAAI,EAAa,UAAjB,aAAI,UACFc,EAAOU,KAAKxB,GAGhB,GAAIc,EAAOzF,OACT,OAAOyF,EAGX,MAAO,GAGT,IAAMQ,EAAmBlD,IAAMuO,SAAQ,WACrC,OAAOF,GAAWhL,KAAI,SAAAC,GACpB,OAAOjJ,MAAM+K,KACX,IAAIoJ,IAAIlL,EAAKiI,KAAKlI,KAAI,SAAAC,GAAI,OAAIA,EAAK1B,OAAKgC,QAAO,SAAAN,GAAI,QAAMA,YAG5D,CAAC+K,KA8KJ,OACE,UAAKvQ,UAAU,aACb,QAAGA,UAAU,QAAb,gBACA,UAAKA,UAAU,aA3Hf,8CACE,8CACGqT,GAAQ9N,KAAI,SAACoB,GAAD,QApGHnB,EAoGG,OACX,SACE1B,IAAG,cAAS6C,GAKZ8E,QAAS,SAAClE,GACRA,EAAEuE,iBACFvE,EAAEwE,kBACFC,YAAiB,4BAA6B,CAC5CC,QAAS,YAVf,6BAEaxJ,IAAW,gCAAmC,CACvDmJ,QAxGIpG,EAwGa+K,GAAW5J,GAvGlB,iBAAlBnB,EAAKgO,SACAD,EAAgB/N,GAEH,iBAAlBA,EAAKgO,WACEC,EAAgBjO,GAAMrG,YADjC,GAqGYyT,aAAa,KAJjB,KAcGrC,GAAW5J,GAAX,MAEmC,iBAAlC4J,GAAW5J,GAAX,UACE,qDACE,GAACmL,GAAD,CAAY9H,QAAO,UAAEuG,GAAW5J,UAAb,aAAE,EAAmB8G,KACtCkE,SAAU,SAACnM,GACLA,GAAuB,QAAfA,EAAKE,OACf2M,EAAkB,CAChB,MAAS7M,EAAKE,MACd,KAAQF,EAAK2E,KACb,IAAO3E,EAAK1B,KACX6C,IAIP1D,MAAOsQ,EAAgBhD,GAAW5J,OAKN,iBAAlC4J,GAAW5J,GAAX,UACE,qDACE,GAACmM,GAAD,CACE9I,QAAO,UAAEuG,GAAW5J,UAAb,aAAE,EAAmB8G,KAC5BpK,KAAMkN,GAAW5J,GAAX,MACNgL,SAAU,SAACnM,IA9F/B,SAA2BvC,EAAiB8N,EAAc4C,GAAoB,YAexD,QAbdC,EAAcxO,EAAiB2L,GAE/B5L,EAAa/I,OAAOkE,OAAO,GAAIuJ,GAWrC,QATkBxN,IAAdsX,GAEoBvO,EAAiBuO,GACzBjQ,SAAQ,SAAAI,GACpBqB,EAAWrB,GAAO,QAKlB,OAACb,QAAD,IAACA,OAAD,EAACA,EAAO9D,QAUV,OATAyU,EAAYlQ,SAAQ,SAAAI,GAClBqB,EAAWrB,GAAO,WAEpBmH,EAAO3F,KAAP,wBACmBJ,aAASC,EAAYC,IADxC,iBAC4D7F,cAD5D,iBAC4D,EAAQgE,gBADpE,aAC4D,EAAkBD,QAD9E,wBAGmB4B,aAASC,EAAYC,IAHxC,iBAG4D7F,cAH5D,iBAG4D,EAAQgE,gBAHpE,aAG4D,EAAkBD,SAM3E,OAALL,QAAK,IAALA,KAAOS,SAAQ,SAAAI,GAERqB,EAAWrB,KACdqB,EAAWrB,GAAO,IAGpBqB,EAAWrB,GAAO,CAChB,CACEqG,KAAM,GACNzE,MAAO,OAKbuF,EAAO3F,KAAP,wBACmBJ,aAASC,EAAYC,IADxC,iBAC4D7F,cAD5D,iBAC4D,EAAQgE,gBADpE,aAC4D,EAAkBD,QAD9E,wBAGmB4B,aAASC,EAAYC,IAHxC,iBAG4D7F,cAH5D,iBAG4D,EAAQgE,gBAHpE,aAG4D,EAAkBD,SAmD1DuQ,CAAkBrO,EAAMmB,IAE1B1D,MAAOwQ,EAAgBlD,GAAW5J,YA9ClD,wzC,yBClHAuL,GAA4B,CAChC,CACE,KAAQ,eACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,eACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,2BACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,qBACR,IAAO,YACP,MAAS,QACT,SAAY,CACV,CACE,MAAS,QACT,KAAQ,eACR,IAAO,aAET,CACE,KAAQ,qBACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,qBACR,IAAO,YACP,MAAS,GAEX,CACE,KAAQ,6CACR,IAAO,YACP,MAAS,KAIf,CACE,KAAQ,2CACR,IAAO,YACP,MAAS,KAWE,SAAS4B,GAAT,GAAiE,IAA7CzB,EAA6C,EAA7CA,kBAA6C,KAA1BxC,eACxB3N,IAAM8I,WAAWZ,IAArCP,EADsE,EACtEA,MADsE,EAC/DS,SAEf,SAASyJ,EAAiBvO,GAAkB,QAC1C,IAAKqE,EAAMmK,UACT,OAAO,EAET,IAAMtO,GAAgB,UAAAmE,EAAMmK,iBAAN,mBAAkB,UAAlB,sBAAkC,GAClDC,EAAoBzO,EAAKE,MAAQ,GACvC,IAAa,OAATuO,QAAS,IAATA,OAAA,EAAAA,EAAW5V,QAAQ,OAAQ,GAC7B,IAAa,OAAT4V,QAAS,IAATA,OAAA,EAAAA,EAAW5V,QAAQqH,KAAU,EAC/B,OAAO,OAGT,GAAIuO,IAAcvO,EAChB,OAAO,EAGX,OAAO,EA0IT,OACE,UAAK1F,UAAU,aACb,QAAGA,UAAU,QAAb,gBACA,UAAKA,UAAU,aA/Hf,6CACE,UACE8D,IAAK,IAIL2H,QAAS,WACP4G,EAAkB,CAChB,MAAS,IACT,KAAQ,eACR,IAAO,aA5CH,IAmCV,4BAEa5P,IAAW,sCAAuC,CAC3DmJ,QAAS/B,EAAMmK,aAHnB,qBAaA,8CACG9B,GAAW3M,KAAI,SAACyO,GAAD,eACd,SACElQ,IAAKkQ,EAAUtO,MAKf+F,QAAS,SAAClE,GACRA,EAAEuE,iBACFvE,EAAEwE,kBACFC,YAAiB,4BAA6B,CAC5CC,QAAS,WAEXoG,EAAkB,CAChB,MAAS2B,EAAUtO,MACnB,KAAQsO,EAAU7J,KAClB,IAAO6J,EAAUlQ,KAjEjB,IAkDN,4BAEarB,IAAW,2CAAD,OAA6CuR,EAAUtO,OAAU,CACpFkG,OAAQmI,EAAiBC,GACzBpB,YAAW,OAAEoB,QAAF,IAAEA,GAAF,UAAEA,EAAWjU,gBAAb,aAAE,EAAqBZ,UAJtC,KAmBE,gDAA+B6U,EAAU7J,OAE9B,OAAT6J,QAAS,IAATA,GAAA,UAAAA,EAAWjU,gBAAX,eAAqBZ,SACnB,mDACE,GAAC2S,GAAD,CAAY9H,QAAO,OAAEgK,QAAF,IAAEA,OAAF,EAAEA,EAAWjU,SAC9B4R,SAAU,SAACnM,GACT6M,EAAkB,CAChB,MAAS7M,EAAKE,MACd,KAAQF,EAAK2E,KACb,IAAO3E,EAAK1B,KA9EpB,IAkFIb,MA1Db4G,EAAMmK,UAGPnK,EAAMmK,UACDnK,EAAMmK,UAAU,GAAhB,WADT,EAFS,WASP,+yC,yBCnFS,SAASE,GAAT,GAIJ,IAHT3D,EAGS,EAHTA,WACA4D,EAES,EAFTA,SACAC,EACS,EADTA,UAEMnJ,EAASC,sBADN,EAGeC,mBAASiJ,GAA1BC,EAHE,KAGIC,EAHJ,OAMmBpS,IAAM8I,WAAWZ,GAArCP,EANC,EAMDA,MAoEFzE,GA1EG,EAMMkF,SAoEUpI,IAAMuO,SAAQ,WACrC,OAAOF,EAAWhL,KAAI,SAAAC,GACpB,OAAOjJ,MAAM+K,KACX,IAAIoJ,IAAIlL,EAAKiI,KAAKlI,KAAI,SAAAC,GAAI,OAAIA,EAAK1B,OAAKgC,QAAO,SAAAN,GAAI,QAAMA,YAG5D,CAAC+K,KAmEE8B,EAAoB,SAAC7M,EAAkBuL,EAAc4C,GAAuB,kBAC1EY,EAAWnY,OAAOkE,OAAO,GAAIkF,IAEvB,OAAR+O,QAAQ,IAARA,OAAA,EAAAA,EAAUzQ,OAAV,OACF+F,QADE,IACFA,GADE,UACFA,EAAK,OAAG0K,QAAH,IAAGA,OAAH,EAAGA,EAAUzQ,YADhB,aACF,EAAyB,MACjB,OAARyQ,QAAQ,IAARA,OAAA,EAAAA,EAAU7O,UAAV,OAAoBmE,QAApB,IAAoBA,GAApB,UAAoBA,EAAK,OAAG0K,QAAH,IAAGA,OAAH,EAAGA,EAAUzQ,YAAtC,iBAAoB,EAAyB,UAA7C,aAAoB,WACpByQ,EAASpK,KAAO,eAChBoK,EAAS7O,MAAQ,KAvEL,SAACF,GACf,IAAMjH,EAEF,GAEJ,OAAQiH,EAAK1B,KACX,IAAK,QACHvF,EAAOmO,SAAW,mBAClBnO,EAAOiW,YAAchP,EAAK2E,KAC1B,MACF,IAAK,cACL,IAAK,qBACH5L,EAAOmO,SAAW,4BAClBnO,EAAOkW,wBAA0BjP,EAAK2E,KACtC,MACF,IAAK,aACH5L,EAAOmO,SAAW,oBAClBnO,EAAOmW,aAAelP,EAAK2E,KAC3B,MACF,IAAK,YACH5L,EAAOmO,SAAW,6BAClBnO,EAAOoW,yBAAyC,iBAAdnP,EAAK2E,KAAgB,qBAAQ3E,EAAK2E,KACpE,MACF,IAAK,UACH5L,EAAOmO,SAAW,+BAClBnO,EAAOqW,2BAA6BpP,EAAK2E,KACzC,MACF,IAAK,mBACH5L,EAAOmO,SAAW,6BAClBnO,EAAOsW,oBAAsBrP,EAAK2E,KAClC,MACF,IAAK,aACH5L,EAAOmO,SAAW,mBAClBnO,EAAOuW,iBAAmBtP,EAAK2E,KAC/B,MACF,IAAK,eACH5L,EAAOmO,SAAW,4BAClBnO,EAAO4U,kBAAoB,qBAC3B5U,EAAO6U,mBAAqB5N,EAAK2E,KACjC,MACF,IAAK,aACH5L,EAAOmO,SAAW,4BAClBnO,EAAO4U,kBAAoB,eAC3B5U,EAAO6U,mBAAqB5N,EAAK2E,KACjC,MACF,IAAK,gBACH5L,EAAOmO,SAAW,4BAClBnO,EAAO4U,kBAAoB,qBAC3B5U,EAAO6U,mBAAqB5N,EAAK2E,KACjC,MACF,IAAK,cACH5L,EAAOmO,SAAW,4BAClBnO,EAAO4U,kBAAoB,2BAC3B5U,EAAO6U,mBAAqB5N,EAAK2E,KACjC,MACF,IAAK,WACH5L,EAAOmO,SAAW,4BAClBnO,EAAO4U,kBAAoB,2BAC3B5U,EAAO6U,mBAAqB5N,EAAK2E,KAGrC6B,YAAiB,YAAazN,GAY9BwW,CAAQR,GAER,IAasC,QAbhCX,EAAcxO,EAAiB2L,GAE/B5L,EAAa/I,OAAOkE,OAAO,GAAIuJ,QAEnBxN,IAAdsX,GAEoBvO,EAAiBuO,GACzBjQ,SAAQ,SAAAI,GACpBqB,EAAWrB,GAAO,MAKtB,GAAIyQ,EAASpK,KAAK9L,QAAQ,iBAAS,EAWjC,OAVAuV,EAAYlQ,SAAQ,SAAAI,GAClBqB,EAAWrB,GAAO,WAEpBmH,EAAO3F,KAAP,wBACmBJ,aAASC,EAAYC,IADxC,iBAC4D7F,cAD5D,iBAC4D,EAAQgE,gBADpE,aAC4D,EAAkBD,QAD9E,wBAGmB4B,aAASC,EAAYC,IAHxC,iBAG4D7F,cAH5D,iBAG4D,EAAQgE,gBAHpE,aAG4D,EAAkBD,SAO3E6B,EAAWoP,EAASzQ,OACvBqB,EAAWoP,EAASzQ,KAAO,IAG7BqB,EAAWoP,EAASzQ,KAAO,CACzB,CACEqG,KAAMoK,EAASpK,KACfzE,MAAO6O,EAAS7O,QAGpBuF,EAAO3F,KAAP,wBACmBJ,aAASC,EAAYC,IADxC,iBAC4D7F,cAD5D,iBAC4D,EAAQgE,gBADpE,aAC4D,EAAkBD,QAD9E,wBAGmB4B,aAASC,EAAYC,IAHxC,iBAG4D7F,cAH5D,iBAG4D,EAAQgE,gBAHpE,aAG4D,EAAkBD,UAKhF,SAASuM,EAAepK,EAAoBsL,GAC1C,QAAKtL,IAIe,iBAAhBA,EAAO0E,MACD/E,EAAiB2L,GAAMjU,MAC7B,SAAA0I,GAAI,QAAMqE,EAAMrE,IAASqE,EAAMrE,GAAMrG,OAAS,QAG7C0K,EAAMpE,EAAO3B,OAAS+F,EAAMpE,EAAO3B,KAAK3E,WAIzC0K,EAAMpE,EAAO3B,KAAKhH,MAAK,SAAA0I,GAAI,OAAIA,EAAKE,OAASD,EAAOC,UAmB1D,SAASkJ,EAAWoG,GAClB,OACE,qBAEIA,EAAQzP,KAAI,SAACwL,GACX,IAAMtD,EAAyB8C,EAAWQ,GAC1C,MAAsB,WAAlBtD,EAAK+F,SAEL,UAAoC1P,IAAK2J,EAAKjB,MAA9C,+CACE,4CAAwBiB,EAAKjB,OAC7B,gDACGiB,EAAKA,KAAKlI,KAAI,SAACC,GACd,MAAkB,uBAAdA,EAAK2E,KAEL,UAAiCrG,IAAK0B,EAAK2E,KAA3C,4CACE,GAACyG,GAAD,CACE9M,IAAK0B,EAAK2E,KACVsB,QAAS4G,EACTxB,MAAOhH,EAAMrE,EAAK1B,KAClBiG,KAAMvE,EAAK1B,IACXgN,SAAuB,eAAbtL,EAAK1B,IAAuB,SAAM,SAC5CiN,KAAMA,KAMZ,WACEjN,IAAK0B,EAAK2E,KACV8F,KAAK,SAILxE,QAAS,SAAAuG,GACPA,EAAMjG,kBACNsG,EAAkB7M,EAAMuL,IAR5B,6BAGatO,IAAW,8BAA+B,CACnDmJ,OAAQiE,EAAerK,EAAMuL,MAJjC,KAWGvL,EAAK2E,WASE,QAAlBsD,EAAK+F,SAEL,GAACpB,GAAD,CAAYtO,IAAK2J,EAAKjB,MACpB6F,kBAAmBA,EACnBxC,eAAgBA,IAIA,cAAlBpC,EAAK+F,SAEL,GAACM,GAAD,CAAUhQ,IAAK2J,EAAKjB,MAClB6F,kBAAmBA,EACnBxC,eAAgBA,SAJtB,KArDN,sGA0EJ,OACE,GAAC,IAAMG,SAAP,KACGpB,EA3FU,CACb,EACA,EACA,GACA,IAwFE,mDACiByF,EAAkC,GAA3B,2BACrBzF,EAvFQ,CACb,EACA,EACA,IAqFI,GAAC0E,GAAD,CAAOxP,IAAK,QACVuO,kBAAmBA,EACnBxC,eAAgBA,KAtTpB,gDAkD8BwE,EAAO,UAAY,WAlDjD,KAAgB5R,IAAW,CAAEsO,MAAOoD,KAApC,KACE,WACElE,KAAK,SAELxE,QAAS,WACP6I,GAASD,GACTrI,YAAiB,YAAa,CAC5BU,SAAU,kBACVuI,YAAcZ,EAAkB,OAAX,YAP3B,sCAiD4BA,EAAO,UAAY,WAjD/C,gBAWGA,EAAO,gBAAQ,mEAChB,iDAqC0BA,EAAO,UAAY,WArC7C,iBAbJ,iCAkD8BA,EAAO,UAAY,SAlDjD,uyBAkD8BA,EAAO,UAAY,OAlDjD,kCAkD8BA,EAAO,UAAY,OAlDjD,8BAkD8BA,EAAO,UAAY,OAlDjD,UA+SF,8S,yBC3TW,SAASa,GAAerU,GAAe,IAC5C0P,EAA4C1P,EAA5C0P,WAAYtC,EAAgCpN,EAAhCoN,KAAMkH,EAA0BtU,EAA1BsU,UAAW9E,EAAexP,EAAfwP,WACrC,OACE,kBACE,GAAC6D,GAAD,CAAY3D,WAAYA,EAAY6D,UAAWe,IAC/C,GAAC7E,GAAD,CAAUC,WAAYA,IACpBF,EAKA,GAAC,GAAD,CAAeA,WAAYA,IAJ3B,GAAC,IAAD,CAAO+E,MAAO,GAAC,IAAD,OACZ,GAACpH,EAAD,CAASC,KAAMA,MC3BzB,IAAMoH,GAAmB,CAAH,4yB,uBAuCPA,UCGf,IAAMC,GAAY,CAChB,qBACA,oBACA,cACA,kBACA,YACA,YACA,mBACA,oBACA,qBACA,mBACA,cACA,cACA,UACA,SACA,eACA,qBACA,SACA,cAGWC,GAAY,SAACC,GACxB,OAAOF,GAAU7C,MAAK,SAACgD,GACrB,OAAK,KAAOD,GAAM,IAAInX,QAAQoX,O,kmBCtClC,SAASC,GAAY7U,GAAmB,UAC9B8U,EAA2D9U,EAA3D8U,MAAO3L,EAAoDnJ,EAApDmJ,QAASc,EAA2CjK,EAA3CiK,QAASC,EAAkClK,EAAlCkK,OAAQP,EAA0B3J,EAA1B2J,UAAW6F,EAAexP,EAAfwP,WADd,EAEdlF,oBAAc,WACpC,gBACKX,GACAR,MAHA4L,EAF+B,KAEzBC,EAFyB,KAShCC,GAAoB,OAALH,QAAK,IAALA,OAAA,EAAAA,EAAOG,gBAAP,OAAuBH,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAOxJ,IAI7C4J,EAAc,CAAC,EAAG,EAAG,GAAI,GAAI,EAAG,GAChCC,EAAS,OAAGF,QAAH,IAAGA,GAAH,UAAGA,EACdxY,MAAM,YADK,aAAG,EAEdmV,MAAK,SAACjN,EAAWmB,GACjB,OAAIoP,EAAY1X,QAAQsI,GAAS,GAAc,MAATnB,KAM1CkF,qBAAU,WACRmL,EAAQ,SACHrL,GACAR,MAEJ,CAACA,EAASQ,IAEb,IAAMyL,GAAW,IAAIC,MAAOC,cACxB3J,EAAQ,GACR4J,EAAc,GACdC,EAAW,GAEf,IAAI,cAEF,UAAI7L,QAAJ,IAAIA,GAAJ,UAAIA,EAAS,aAAb,iBAAI,EAAuB,UAA3B,aAAI,OAAqC,SACjC0B,EAAK,OAAG1B,QAAH,IAAGA,GAAH,UAAGA,EAAS,aAAZ,iBAAG,EAAuB,UAA1B,aAAG,OACdgC,EAAQ,SAAH,OAAON,EAAP,yCAAoBA,EAApB,gDAAmCA,EAAnC,wEAELkK,EAAc,kCAAH,OAAYlK,EAAZ,wEAA+B+J,GAA/B,OAA0C/J,EAA1C,sGAAkEA,EAAlE,iMAA+GA,EAA/G,wFACXmK,EAAW,GAAH,OAAMnK,EAAN,oCAAmBA,EAAnB,gDAAkCA,EAAlC,wCAIV,IAAW,OAAPlC,QAAO,IAAPA,GAAA,UAAAA,EAAO,aAAP,eAAqB,MAArB,OAA2BA,QAA3B,IAA2BA,GAA3B,UAA2BA,EAAO,aAAlC,iBAA2B,EAAqB,UAAhD,aAA2B,QAAmC,SAC1D6G,EAAK,OAAG7G,QAAH,IAAGA,GAAH,UAAGA,EAAO,aAAV,iBAAG,EAAqB,UAAxB,aAAG,OACdwC,GAAS,GAAJ,OAAOqE,EAAP,0CAAqBA,EAArB,uEACLuF,GAAe,oIACfC,GACE,oeAEJ,MAAO1T,GACP2T,QAAQ3T,MAAMA,GAchB,OAXK6J,IACHA,EAAQ,4BAAH,OAAWyJ,EAAX,mHAEFG,IACHA,EACE,ocAECC,IACHA,EAAW,4BAAH,OAAWJ,EAAX,gGAIR,cACE,GAAC,IAAD,KACE,YAAOnS,IAAI,SAAS0I,GACpB,WAAM1I,IAAI,WAAWT,KAAK,WAAWkT,QAASF,IAC9C,WAAMvS,IAAI,cAAcT,KAAK,cAAckT,QAASH,IACpD,WACEI,IAAI,YACJ9K,KAAI,2CAA+B7K,QAA/B,IAA+BA,GAA/B,UAA+BA,EAAO4V,cAAtC,iBAA+B,EAAenZ,MAAM,YAApD,aAA+B,EAA4B,OAGnE,wDACE,iEACA,2CACE,GAAC,EAAD,CAAiBkN,UAAWoL,GAC1B,GAAC/K,EAAD,CAAWC,QAASA,EAASC,OAAQA,IACrC,GAACmK,GAAD,CACE3E,WAAYA,GACZtC,KAAMA,GACNkH,UAAWa,EACX3F,WAAYA,MATpB,2MAoCN,SAASqG,GAAajJ,EAAWkI,GAAY,QAEvCgB,EAAqB,GACnB5L,EAAyB,GACzBD,EAAoB,IACtB,OAAJ2C,QAAI,IAAJA,OAAA,EAAAA,EAAMvB,SAAN,UACEuB,EAAKvB,aADP,OACE,EAAYxI,SAAQ,SAAC8B,GACD,MAAdA,EAAKuE,OACPe,EAAQxF,KAAKE,EAAK6G,KAAKE,QACvBxB,EAAOzF,KAAKqR,GACZA,EAAO,IAES,MAAdnR,EAAKuE,MAA+B,OAAdvE,EAAKuE,MAC7B4M,EAAKrR,KAAKE,OAGhBuF,EAAOzF,KAAKqR,GACZ5L,EAAO6L,QAGH,OAAJnJ,QAAI,IAAJA,GAAA,UAAAA,EAAMoJ,iBAAN,SAAiBnT,SAAQ,SAAC8B,GACxBA,EAAKuE,KAAO,KACRvE,EAAK6G,MAAQ7G,EAAK6G,KAAKE,SACzB/G,EAAK6G,KAAKE,OAAS,WAGnB,OAAJkB,QAAI,IAAJA,OAAA,EAAAA,EAAMoJ,YAAa9L,EAAOzF,KAAP,OAAYmI,QAAZ,IAAYA,OAAZ,EAAYA,EAAMoJ,WAErC,IAAM7M,EAAe,GAEf8L,GAAoB,OAALH,QAAK,IAALA,OAAA,EAAAA,EAAOG,gBAAP,OAAuBH,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAOxJ,IACnD,GAAI2J,EAAc,CAChB,IAAMgB,EAAU,OAAGhB,QAAH,IAAGA,OAAH,EAAGA,EAAcxY,MAAM,KAE7B,OAAViT,SAAU,IAAVA,OAAY7M,SAAQ,SAAC8B,EAAWmB,GAC9B,IAAMjB,EACoB,OAAd,OAAVoR,QAAU,IAAVA,OAAA,EAAAA,EAAanQ,IAAiB,KAAgB,OAAVmQ,QAAU,IAAVA,OAAA,EAAAA,EAAanQ,KAAU,IAC7D,GAAc,KAAVA,GAA0B,IAAVA,EAElB,GAAc,IAAVA,EAAa,CACf,IAAMoQ,EAAkCvR,EAAKiI,KAAKgF,MAChD,SAAChN,GAAD,aACQ,OAANA,QAAM,IAANA,GAAA,UAAAA,EAAQC,aAAR,eAAeC,cAAeD,EAAMC,WAAWC,QAAQ,IAAK,QAEhE,GAAsB,kBAAX,OAAPmR,QAAO,IAAPA,OAAA,EAAAA,EAAS5M,MACX,OAEF,IAAI,OACuB,OAALzE,QAAK,IAALA,OAAA,EAAAA,EAAOpI,MAAM,OAAQ,GADvC,mBACK8T,EADL,KACUE,EADV,KAEEA,IAEAtH,EAAQ6G,MADG,OAATS,EACc,CACdyF,GAAW,CACTrR,MAAOA,EAAMC,WAAWC,QAAQ,IAAK,KACrCuE,KAAM,GAAF,OAAKiH,EAAL,sBACJtN,IAAK,UAIO,CACdiT,GAAW,CACTrR,MAAOA,EAAMC,WAAWC,QAAQ,IAAK,KACrCuE,KAAM,GAAF,cAAKzE,QAAL,IAAKA,OAAL,EAAKA,EAAOpI,MAAM,KAAK4G,KAAK,KAA5B,UACJJ,IAAK,WAKb,MAAOyD,GACP+O,QAAQ3T,MAAM4E,SAEX,GAAc,KAAVZ,EAAc,CAEvB,IAAMoQ,EAAkCvR,EAAKiI,KAAKgF,MAChD,SAAChN,GAAD,eACQ,OAANA,QAAM,IAANA,GAAA,UAAAA,EAAQC,aAAR,eAAeC,eAAf,OAA8BD,QAA9B,IAA8BA,GAA9B,UAA8BA,EAAOC,kBAArC,aAA8B,EAAmBC,QAAQ,IAAK,SAElE,GAAsB,kBAAX,OAAPmR,QAAO,IAAPA,OAAA,EAAAA,EAAS5M,MACX,OAEF,IAAI,MACFH,EAAQyF,WAAa,CACnBsH,GAAW,CACTrR,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOC,WACdwE,KAAM,GAAF,cAAKzE,QAAL,IAAKA,GAAL,UAAKA,EAAOpI,MAAM,YAAlB,aAAK,EAAmB4G,KAAK,KAA7B,UACJJ,IAAK,eAGT,MAAOyD,GACP+O,QAAQ3T,MAAM4E,QAEX,CACL,IAAMwP,EAAkCvR,EAAKiI,KAAKgF,MAChD,SAAChN,GAAD,aACQ,OAANA,QAAM,IAANA,GAAA,UAAAA,EAAQC,aAAR,eAAeC,eAAf,OAA8BD,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAOC,WAAWC,QAAQ,IAAK,cAE5CvJ,KAAV,OAAP0a,QAAO,IAAPA,OAAA,EAAAA,EAASjT,MAAsC,MAAV,OAAPiT,QAAO,IAAPA,OAAA,EAAAA,EAASjT,OACzCkG,EAAQ+M,EAAQjT,KAAO,CAACiT,QAGvB,SACCJ,EAAI,OAAGG,QAAH,IAAGA,GAAH,UAAGA,EAAanQ,UAAhB,iBAAG,EAAqBrJ,MAAM,YAA9B,aAAG,EAAiCiI,KAAI,SAACC,GACjD,OAAOyL,SAASzL,EAAM,KAAO,KAE3B,OAAJmR,QAAI,IAAJA,KAAMjT,SAAQ,SAACiD,GACb,IAAMoQ,EAAUvR,EAAKiI,KAAK9G,GACL,MAAV,OAAPoQ,QAAO,IAAPA,OAAA,EAAAA,EAASjT,OACXkG,EAAQ+M,EAAQjT,KAAO,CAACiT,WAOlC,MAAO,CACL/M,UACAuG,cACAtC,QACAnD,UACAC,UAIJ,SAASiM,GAAWP,GAClB,IAAMnT,EAA2B,qBAAXmT,GAA0BA,GAAUA,EAAOnZ,MAAM,KAAK,GACtEmG,EAAU,GACZ+G,EAAY,GAChB,GAAIlH,EAAQ,OACJ,OAANA,QAAM,IAANA,GAAA,UAAAA,EAAQhG,MAAM,YAAd,SAAoBoG,SAAQ,SAAUC,GACpC,GAAU,KAANA,EAAJ,CAGA,IAAMsT,EAAWtT,EAAErG,MAAM,KACnBwG,EAAMmT,EAAS,GACrBxT,EAAQK,GAAOmT,EAASjT,MAAM,OAEhC,IAAMkT,EAAOzT,EAAO,IACdiC,EAAQjC,EAAO,MACf0G,EAAO1G,EAAO,KACd2I,EAAO3I,EAAO,KAChByT,GAAQxR,GAASyE,IACnBK,EAAY0M,EAAKC,QAAO,SAACC,EAAUC,EAAM1Q,GACvC,OAAK0Q,GAGAD,EAAIC,KACPD,EAAIC,GAAQ,IAEdD,EAAIC,GAAM/R,KAAK,CACbI,MAAO4R,OAAM,OAAC5R,QAAD,IAACA,OAAD,EAACA,EAAQiB,MAAf,OAA0BjB,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAQiB,IACzCwD,KAAMlG,mBAAkB,OAACkG,QAAD,IAACA,OAAD,EAACA,EAAOxD,IAChCyF,KAAMkL,OAAM,OAAClL,QAAD,IAACA,OAAD,EAACA,EAAOzF,MAAd,OAAyByF,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAOzF,MAEjCyQ,GAVEA,IAWR,KAGP,OAAO5M,EAGTkL,GAAY6B,gBAAZ,uCAA8B,iDAAAxP,EAAA,6DAAS4N,EAAT,EAASA,MAAOc,EAAhB,EAAgBA,OAAQe,EAAxB,EAAwBA,IAAxB,SAEnBvK,YAAMC,YAAO,gCAAiC,oBAAqB,CACxEsK,QACC1H,OAAM,SAACC,OAJgB,gDAMnB,GANmB,UACtBvC,EADsB,KAQtBC,EAAOiJ,GAAalJ,EAAKC,KAAMkI,IAAU,GACzCnL,EAAYwM,GAAWP,GAKvBjB,EAdsB,OAcjBgC,QAdiB,IAcjBA,GAdiB,UAcjBA,EAAKpK,eAdY,aAcjB,EAAe,cACtBiD,EAAa,MACbmF,IAAMD,GAAUC,GAhBQ,wBAiBpB1I,EAAWa,EAAmB,SAC/BnD,GAD8B,OAE9BiD,QAF8B,IAE9BA,OAF8B,EAE9BA,EAAMzD,UAnBe,UAqBP6C,EAAQC,GArBD,QAqB1BuD,EArB0B,sBAwBtBzL,EAxBsB,OAyB1B6S,UAAW,OACRhK,GA1BuB,IA2B1BkI,QACAnL,YACAiM,SACApG,eA9B0B,kBAgCrBzL,GAhCqB,4CAA9B,sDAmCe8S,4BAAuBhC,ICjVvBiC,c,uBCFf,EAAQ,QACR,EAAQ,QACR/b,EAAOC,QAAU,EAAQ,QAAuBU,MAAM+K,M,kCCDtD,IAAIsQ,EAAM,EAAQ,QACd5S,EAAU,EAAQ,QAClB6S,EAAW,EAAQ,QACnB1Q,EAAO,EAAQ,QACf2Q,EAAc,EAAQ,QACtBrP,EAAW,EAAQ,QACnBsP,EAAiB,EAAQ,QACzBC,EAAY,EAAQ,QAExBhT,EAAQA,EAAQC,EAAID,EAAQiT,GAAK,EAAQ,OAAR,EAA0B,SAAUhR,GAAQ1K,MAAM+K,KAAKL,MAAW,QAAS,CAE1GK,KAAM,SAAc4Q,GAClB,IAOI/Y,EAAQyF,EAAQuT,EAAMC,EAPtBjc,EAAI0b,EAASK,GACbG,EAAmB,mBAAR1T,KAAqBA,KAAOpI,MACvC+b,EAAOC,UAAUpZ,OACjBqZ,EAAQF,EAAO,EAAIC,UAAU,QAAKlc,EAClCoc,OAAoBpc,IAAVmc,EACV7R,EAAQ,EACR+R,EAASV,EAAU7b,GAIvB,GAFIsc,IAASD,EAAQZ,EAAIY,EAAOF,EAAO,EAAIC,UAAU,QAAKlc,EAAW,SAEvDA,GAAVqc,GAAyBL,GAAK9b,OAASub,EAAYY,GAMrD,IAAK9T,EAAS,IAAIyT,EADlBlZ,EAASsJ,EAAStM,EAAEgD,SACSA,EAASwH,EAAOA,IAC3CoR,EAAenT,EAAQ+B,EAAO8R,EAAUD,EAAMrc,EAAEwK,GAAQA,GAASxK,EAAEwK,SANrE,IAAKyR,EAAWM,EAAOvR,KAAKhL,GAAIyI,EAAS,IAAIyT,IAAOF,EAAOC,EAASzQ,QAAQC,KAAMjB,IAChFoR,EAAenT,EAAQ+B,EAAO8R,EAAUtR,EAAKiR,EAAUI,EAAO,CAACL,EAAKlV,MAAO0D,IAAQ,GAAQwR,EAAKlV,OASpG,OADA2B,EAAOzF,OAASwH,EACT/B,M,kCChCX,IAAI4D,EAAW,EAAQ,QACnBmQ,EAAY,EAAQ,QACpBhQ,EAAa,EAAQ,QAGzB,EAAQ,OAAR,CAAyB,SAAU,GAAG,SAAUiQ,EAASC,EAAQC,EAAShQ,GACxE,MAAO,CAGL,SAAgBC,GACd,IAAI5M,EAAIyc,EAAQjU,MACZoU,OAAe1c,GAAV0M,OAAsB1M,EAAY0M,EAAO8P,GAClD,YAAcxc,IAAP0c,EAAmBA,EAAG5R,KAAK4B,EAAQ5M,GAAK,IAAI8M,OAAOF,GAAQ8P,GAAQnU,OAAOvI,KAInF,SAAU4M,GACR,IAAIG,EAAMJ,EAAgBgQ,EAAS/P,EAAQpE,MAC3C,GAAIuE,EAAItB,KAAM,OAAOsB,EAAIjG,MACzB,IAAIkG,EAAKX,EAASO,GACd9D,EAAIP,OAAOC,MACXqU,EAAoB7P,EAAGI,UACtBoP,EAAUK,EAAmB,KAAI7P,EAAGI,UAAY,GACrD,IAAI3E,EAAS+D,EAAWQ,EAAIlE,GAE5B,OADK0T,EAAUxP,EAAGI,UAAWyP,KAAoB7P,EAAGI,UAAYyP,GAC9C,OAAXpU,GAAmB,EAAIA,EAAO+B,Y,qBC3B3C/K,EAAOC,QAAU,EAAQ,S,qICKnBod,EACG,CACLC,QAAS,SAACpV,GACR,IACE,OAAOqV,eAAeD,QAAQpV,GAC9B,MAAOyD,GACP,OAAO,OAGX6R,QAAS,SAACtV,EAAab,GACrB,IACEkW,eAAeC,QAAQtV,EAAKb,GAC5B,MAAOsE,OAWFoI,EAAQ,WAA8B,IAA7B0J,EAA6B,uDAAf,GAClC,IACE,IAAMC,EAAUlW,IAAS,KAAM7D,OAAOgE,SAASD,OAAOU,MAAM,IAAM,IAE5DuV,EACe,kBAAZD,EACHA,EACAL,EAAgBC,QAAQ,SAAW,aAMzC,MAJW,eAAPK,GACFN,EAAgBG,QAAQ,OAAQG,GAGlC,UAAUA,GAAV,OAAeF,EAAc,IAAH,OAAOA,GAAgB,IACjD,MAAO9R,GACP,0BAAoB8R,EAAc,IAAH,OAAOA,GAAgB,O,qBC3C1D,IAAIjQ,EAAS,EAAQ,QACjBoQ,EAAO,EAAQ,QAA4BA,KAC3CC,EAAc,EAAQ,QAEtBC,EAActQ,EAAO8H,WACrByI,EAAS,EAAID,EAAYD,EAAc,SAAW3U,IAItDlJ,EAAOC,QAAU8d,EAAS,SAAoBC,GAC5C,IAAIC,EAAgBL,EAAK9U,OAAOkV,IAC5BhV,EAAS8U,EAAYG,GACzB,OAAkB,IAAXjV,GAA2C,KAA3BiV,EAAcC,OAAO,IAAa,EAAIlV,GAC3D8U,G,kCCZJ,IAAI7B,EAAW,EAAQ,QACnBkC,EAAkB,EAAQ,QAC1BtR,EAAW,EAAQ,QAIvB7M,EAAOC,QAAU,SAAcoH,GAO7B,IANA,IAAI9G,EAAI0b,EAASlT,MACbxF,EAASsJ,EAAStM,EAAEgD,QACpB6a,EAAkBzB,UAAUpZ,OAC5BwH,EAAQoT,EAAgBC,EAAkB,EAAIzB,UAAU,QAAKlc,EAAW8C,GACxE+Q,EAAM8J,EAAkB,EAAIzB,UAAU,QAAKlc,EAC3C4d,OAAiB5d,IAAR6T,EAAoB/Q,EAAS4a,EAAgB7J,EAAK/Q,GACxD8a,EAAStT,GAAOxK,EAAEwK,KAAW1D,EACpC,OAAO9G,I,qBCfT,EAAQ,QACR,EAAQ,QACRP,EAAOC,QAAU,EAAQ,S,mBCFzBD,EAAOC,QAAU,iH,mBCAjBD,EAAOC,QAAU,iH,mBCAjBD,EAAOC,QAAU,09B,qBCCjB,IAAI2M,EAAW,EAAQ,QACvB5M,EAAOC,QAAU,SAAUuc,EAAUW,EAAI9V,EAAO2K,GAC9C,IACE,OAAOA,EAAUmL,EAAGvQ,EAASvF,GAAO,GAAIA,EAAM,IAAM8V,EAAG9V,GAEvD,MAAOsE,GACP,IAAI2S,EAAM9B,EAAiB,OAE3B,WADY/b,IAAR6d,GAAmB1R,EAAS0R,EAAI/S,KAAKiR,IACnC7Q,K,kCCTK,SAAS4S,IAetB,OAdAA,EAAW/d,OAAOkE,QAAU,SAAU0O,GACpC,IAAK,IAAInJ,EAAI,EAAGA,EAAI0S,UAAUpZ,OAAQ0G,IAAK,CACzC,IAAIuU,EAAS7B,UAAU1S,GAEvB,IAAK,IAAI/B,KAAOsW,EACVhe,OAAO8K,UAAU5K,eAAe6K,KAAKiT,EAAQtW,KAC/CkL,EAAOlL,GAAOsW,EAAOtW,IAK3B,OAAOkL,IAGOqL,MAAM1V,KAAM4T,WCff,SAAS+B,EAAuBC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,ECLM,SAASE,EAAgBC,EAAK5W,EAAKb,GAYhD,OAXIa,KAAO4W,EACTte,OAAO4G,eAAe0X,EAAK5W,EAAK,CAC9Bb,MAAOA,EACP0X,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZH,EAAI5W,GAAOb,EAGNyX,E,uECJLI,EAAe,IAAIC,IACnBC,EAAe,IAAID,IACnBE,EAAW,IAAIF,IACfG,EAAoB,EAwBxB,SAASC,EAAQC,EAASC,EAAUrR,QAClB,IAAZA,IACFA,EAAU,IAKPA,EAAQtI,YAAWsI,EAAQtI,UAAY,GAC5C,IAAI4Z,EAAWtR,EACXuR,EAAOD,EAASC,KAChBxa,EAAaua,EAASva,WACtBW,EAAY4Z,EAAS5Z,UAKzB,GAHA,KAAWoZ,EAAaU,IAAIJ,GAAU,qLAAsLA,GAGvNA,EAAL,CAGA,IAAIK,EArCN,SAAmBF,GACjB,OAAKA,EACDN,EAASO,IAAID,GAAcN,EAASS,IAAIH,IAC5CL,GAAqB,EACrBD,EAASU,IAAIJ,EAAML,EAAkBvV,YAC9BsV,EAASS,IAAIH,GAAQ,KAJV,GAoCDK,CAAUL,IAASxa,EAAaW,EAAUiE,WAAa,IAAM5E,EAAaW,EAAUiE,YACjGkW,EAAmBb,EAAaU,IAAID,GAEnCI,IACHA,EAAmB,IAAIC,qBAAqBnK,EAAU3H,GAGlDyR,GAAYT,EAAaW,IAAIF,EAAYI,IAG/C,IAAIE,EAAW,CACbV,SAAUA,EACVD,QAASA,EACTtZ,QAAQ,EACR2Z,WAAYA,EACZO,SAAUH,EAEVI,WAAYJ,EAAiBI,aAAe1f,MAAMC,QAAQkF,GAAaA,EAAY,CAACA,KAItF,OAFAoZ,EAAaa,IAAIP,EAASW,GAC1BF,EAAiBV,QAAQC,GAClBW,GAQT,SAASG,EAAUd,GACjB,GAAKA,EAAL,CACA,IAAIW,EAAWjB,EAAaY,IAAIN,GAEhC,GAAIW,EAAU,CACZ,IAAIN,EAAaM,EAASN,WACtBO,EAAWD,EAASC,SACpBT,EAAOS,EAAST,KACpBS,EAASE,UAAUd,GAEnB,IAAIe,GAAY,EAEZC,GAAe,EAGfX,GACFX,EAAapX,SAAQ,SAAU8B,EAAM1B,GAC/BA,IAAQsX,IACN5V,EAAKiW,aAAeA,IACtBU,GAAY,EACZC,GAAe,GAGb5W,EAAKwW,SAAST,OAASA,IACzBa,GAAe,QAMlBA,GAAgBb,GAAMN,EAAiB,OAAEM,GAE1CS,IAAaG,GAEfH,EAASK,aAIXvB,EAAqB,OAAEM,KAI3B,SAASzJ,EAAS2K,GAChBA,EAAQ5Y,SAAQ,SAAU8C,GACxB,IAAI+V,EAAiB/V,EAAa+V,eAC9BC,EAAoBhW,EAAagW,kBACjCxN,EAASxI,EAAawI,OACtB+M,EAAWjB,EAAaY,IAAI1M,GAIhC,GAAI+M,GAAYS,GAAqB,EAAG,CAEtC,IAAI1a,EAASia,EAASE,WAAWnf,MAAK,SAAU4E,GAC9C,OAAOqa,EAASja,OAAS0a,EAAoB9a,EAAY8a,GAAqB9a,UAGzDrF,IAAnBkgB,IAGFza,EAASA,GAAUya,GAGrBR,EAASja,OAASA,EAClBia,EAASV,SAASvZ,EAAQ0E,OAmBhC,IAAI,EAEJ,SAAUiW,GCxKK,IAAwBC,EAAUC,ED2K/C,SAASC,IAGP,IAFA,IAAIC,EAEKC,EAAOvE,UAAUpZ,OAAQiJ,EAAO,IAAI7L,MAAMugB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3U,EAAK2U,GAAQxE,UAAUwE,GAmCzB,OA9BAtC,EAAgBH,EAFhBuC,EAAQJ,EAAiBtV,KAAKkT,MAAMoC,EAAkB,CAAC9X,MAAMuF,OAAO9B,KAAUzD,MAE/B,QAAS,CACtD7C,QAAQ,EACRkb,WAAO3gB,IAGToe,EAAgBH,EAAuBuC,GAAQ,OAAQ,MAEvDpC,EAAgBH,EAAuBuC,GAAQ,cAAc,SAAUI,GACjEJ,EAAMI,MAAMf,EAAUW,EAAMI,MAChCJ,EAAMI,KAAOA,GAAc,KAE3BJ,EAAMK,iBAGRzC,EAAgBH,EAAuBuC,GAAQ,gBAAgB,SAAU/a,EAAQkb,IAG3Elb,IAAW+a,EAAMhT,MAAM/H,QAAUA,IACnC+a,EAAMM,SAAS,CACbrb,OAAQA,EACRkb,MAAOA,IAIPH,EAAMhc,MAAM8Q,UAEdkL,EAAMhc,MAAM8Q,SAAS7P,EAAQkb,MAI1BH,EClNsCF,EDyKxBF,GCzKcC,EDyKtBE,GCxKN1V,UAAY9K,OAAOghB,OAAOT,EAAWzV,WAC9CwV,EAASxV,UAAUmW,YAAcX,EACjCA,EAASY,UAAYX,EDkNrB,IAAIY,EAASX,EAAO1V,UAwEpB,OAtEAqW,EAAOC,kBAAoB,WAErB,GAKND,EAAOE,mBAAqB,SAA4BC,EAAWC,GAE7DD,EAAU3c,aAAe4D,KAAK9D,MAAME,YAAc2c,EAAUnC,OAAS5W,KAAK9D,MAAM0a,MAAQmC,EAAUhc,YAAciD,KAAK9D,MAAMa,YAC7Hwa,EAAUvX,KAAKsY,MACftY,KAAKuY,eAGHS,EAAU7b,SAAW6C,KAAKkF,MAAM/H,QAC9B6C,KAAKkF,MAAM/H,QAAU6C,KAAK9D,MAAMc,cAClCua,EAAUvX,KAAKsY,MACftY,KAAKsY,KAAO,OAKlBM,EAAOK,qBAAuB,WACxBjZ,KAAKsY,OACPf,EAAUvX,KAAKsY,MACftY,KAAKsY,KAAO,OAIhBM,EAAOL,YAAc,WACnB,GAAKvY,KAAKsY,KAAV,CACA,IAAIY,EAAclZ,KAAK9D,MACnBa,EAAYmc,EAAYnc,UACxB6Z,EAAOsC,EAAYtC,KACnBxa,EAAa8c,EAAY9c,WAC7Boa,EAAQxW,KAAKsY,KAAMtY,KAAKmZ,aAAc,CACpCpc,UAAWA,EACX6Z,KAAMA,EACNxa,WAAYA,MAIhBwc,EAAOQ,OAAS,WACd,IAAIC,EAAcrZ,KAAKkF,MACnB/H,EAASkc,EAAYlc,OACrBkb,EAAQgB,EAAYhB,MAExB,IA9GJ,SAAyBnc,GACvB,MAAiC,oBAAnBA,EAAMd,SA6Gbke,CAAgBtZ,KAAK9D,OACxB,OAAO8D,KAAK9D,MAAMd,SAAS,CACzB+B,OAAQA,EACRkb,MAAOA,EACPxa,IAAKmC,KAAKuZ,aAId,IAAIC,EAAexZ,KAAK9D,MACpBd,EAAWoe,EAAape,SACxBgP,EAAKoP,EAAapP,GAClBqP,EAAMD,EAAaC,IAKnBvd,GAJcsd,EAAaxc,YACfwc,EAAazc,UAClByc,EAAa5C,KACP4C,EAAapd,WErRnB,SAAuCqZ,EAAQiE,GAC5D,GAAc,MAAVjE,EAAgB,MAAO,GAC3B,IAEItW,EAAK+B,EAFLmJ,EAAS,GACTsP,EAAaliB,OAAO8a,KAAKkD,GAG7B,IAAKvU,EAAI,EAAGA,EAAIyY,EAAWnf,OAAQ0G,IACjC/B,EAAMwa,EAAWzY,GACbwY,EAAShgB,QAAQyF,IAAQ,IAC7BkL,EAAOlL,GAAOsW,EAAOtW,IAGvB,OAAOkL,EF0QOuP,CAA8BJ,EAAc,CAAC,WAAY,KAAM,MAAO,cAAe,YAAa,OAAQ,gBAEtH,OAAO,wBAAcpP,GAAMqP,GAAO,MAAOjE,EAAS,CAChD3X,IAAKmC,KAAKuZ,YACTrd,GAAQd,IAGN6c,EArHT,CAsHE,aAUF,SAASnb,EAAUuI,QACD,IAAZA,IACFA,EAAU,IAGZ,IAAIxH,EAAM,mBAENgc,EAAkB,mBAAS,CAC7B1c,QAAQ,EACRkb,WAAO3gB,IAELwN,EAAQ2U,EAAgB,GACxBrB,EAAWqB,EAAgB,GAE3B5c,EAAS,uBAAY,SAAUqb,GAC7Bza,EAAID,SACN2Z,EAAU1Z,EAAID,SAGZ0a,GACF9B,EAAQ8B,GAAM,SAAUnb,EAAQ0E,GAC9B2W,EAAS,CACPrb,OAAQA,EACRkb,MAAOxW,IAGL1E,GAAUkI,EAAQrI,aAEpBua,EAAUe,KAEXjT,GAILxH,EAAID,QAAU0a,IACb,CAACjT,EAAQtI,UAAWsI,EAAQuR,KAAMvR,EAAQjJ,WAAYiJ,EAAQrI,cAEjE,OADA,wBAAckI,EAAM/H,QACb,CAACF,EAAQiI,EAAM/H,OAAQ+H,EAAMmT,OA7CtCvC,EAAgB,EAAQ,cAAe,UAEvCA,EAAgB,EAAQ,eAAgB,CACtC/Y,UAAW,EACXC,aAAa,K,qBGpSf/F,EAAOC,QAAU,EAAQ,S,kCCCzB,IAAI4iB,EAAI,EAAQ,QACZ1E,EAAkB,EAAQ,QAC1B1V,EAAY,EAAQ,QACpBoE,EAAW,EAAQ,QACnBoP,EAAW,EAAQ,QACnB6G,EAAqB,EAAQ,QAC7B3G,EAAiB,EAAQ,QACzB4G,EAA+B,EAAQ,QACvCC,EAA0B,EAAQ,QAElCC,EAAsBF,EAA6B,UACnDG,EAAiBF,EAAwB,SAAU,CAAEG,WAAW,EAAMC,EAAG,EAAGC,EAAG,IAE/EC,EAAMlgB,KAAKkgB,IACXC,EAAMngB,KAAKmgB,IAOfV,EAAE,CAAEzP,OAAQ,QAASoQ,OAAO,EAAMC,QAASR,IAAwBC,GAAkB,CACnF5L,OAAQ,SAAgBoM,EAAOC,GAC7B,IAIIC,EAAaC,EAAmBjW,EAAGkW,EAAGpY,EAAMqY,EAJ5CxjB,EAAI0b,EAASlT,MACbib,EAAMnX,EAAStM,EAAEgD,QACjB0gB,EAAc9F,EAAgBuF,EAAOM,GACrC5F,EAAkBzB,UAAUpZ,OAWhC,GATwB,IAApB6a,EACFwF,EAAcC,EAAoB,EACL,IAApBzF,GACTwF,EAAc,EACdC,EAAoBG,EAAMC,IAE1BL,EAAcxF,EAAkB,EAChCyF,EAAoBN,EAAID,EAAI7a,EAAUkb,GAAc,GAAIK,EAAMC,IAE5DD,EAAMJ,EAAcC,EAtBL,iBAuBjB,MAAMrb,UAtB0B,mCAyBlC,IADAoF,EAAIkV,EAAmBviB,EAAGsjB,GACrBC,EAAI,EAAGA,EAAID,EAAmBC,KACjCpY,EAAOuY,EAAcH,KACTvjB,GAAG4b,EAAevO,EAAGkW,EAAGvjB,EAAEmL,IAGxC,GADAkC,EAAErK,OAASsgB,EACPD,EAAcC,EAAmB,CACnC,IAAKC,EAAIG,EAAaH,EAAIE,EAAMH,EAAmBC,IAEjDC,EAAKD,EAAIF,GADTlY,EAAOoY,EAAID,KAECtjB,EAAGA,EAAEwjB,GAAMxjB,EAAEmL,UACbnL,EAAEwjB,GAEhB,IAAKD,EAAIE,EAAKF,EAAIE,EAAMH,EAAoBD,EAAaE,WAAYvjB,EAAEujB,EAAI,QACtE,GAAIF,EAAcC,EACvB,IAAKC,EAAIE,EAAMH,EAAmBC,EAAIG,EAAaH,IAEjDC,EAAKD,EAAIF,EAAc,GADvBlY,EAAOoY,EAAID,EAAoB,KAEnBtjB,EAAGA,EAAEwjB,GAAMxjB,EAAEmL,UACbnL,EAAEwjB,GAGlB,IAAKD,EAAI,EAAGA,EAAIF,EAAaE,IAC3BvjB,EAAEujB,EAAIG,GAAetH,UAAUmH,EAAI,GAGrC,OADAvjB,EAAEgD,OAASygB,EAAMH,EAAoBD,EAC9BhW,M,qBCnEX,IAAIiV,EAAI,EAAQ,QACZqB,EAA2B,EAAQ,QAIvCrB,EAAE,CAAErV,QAAQ,EAAMiW,OAAQnO,YAAc4O,GAA4B,CAClE5O,WAAY4O,K,oCCLd,IAAIC,EAAkB,EAAQ,QAC1BC,EAAa,EAAQ,QAEzBpkB,EAAOC,QAAU,SAAUokB,EAAQtZ,EAAO1D,GACpC0D,KAASsZ,EAAQF,EAAgB7X,EAAE+X,EAAQtZ,EAAOqZ,EAAW,EAAG/c,IAC/Dgd,EAAOtZ,GAAS1D,I,kCCLvB,IAAIwb,EAAI,EAAQ,QACZpa,EAAY,EAAQ,QACpB6b,EAAkB,EAAQ,QAC1B3b,EAAS,EAAQ,QACjB4b,EAAQ,EAAQ,QAEhBC,EAAgB,GAAIjP,QACpBlS,EAAQD,KAAKC,MAEbohB,EAAM,SAAUxZ,EAAGhC,EAAGuS,GACxB,OAAa,IAANvS,EAAUuS,EAAMvS,EAAI,IAAM,EAAIwb,EAAIxZ,EAAGhC,EAAI,EAAGuS,EAAMvQ,GAAKwZ,EAAIxZ,EAAIA,EAAGhC,EAAI,EAAGuS,IA4BlFqH,EAAE,CAAEzP,OAAQ,SAAUoQ,OAAO,EAAMC,OAZtBe,IACY,UAAvB,KAAQjP,QAAQ,IACG,MAAnB,GAAIA,QAAQ,IACS,SAArB,MAAMA,QAAQ,IACuB,yBAArC,mBAAsBA,QAAQ,MAC1BgP,GAAM,WAEVC,EAAcjZ,KAAK,QAKgC,CAEnDgK,QAAS,SAAiBmP,GACxB,IAKI/Y,EAAGgZ,EAAGC,EAAGd,EALTe,EAASP,EAAgBvb,MACzB+b,EAAcrc,EAAUic,GACxB7S,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACvBkT,EAAO,GACP/b,EAAS,IAGTgc,EAAW,SAAU/b,EAAGlB,GAG1B,IAFA,IAAIgD,GAAS,EACTka,EAAKld,IACAgD,EAAQ,GACfka,GAAMhc,EAAI4I,EAAK9G,GACf8G,EAAK9G,GAASka,EAAK,IACnBA,EAAK5hB,EAAM4hB,EAAK,MAIhBC,EAAS,SAAUjc,GAGrB,IAFA,IAAI8B,EAAQ,EACRhD,EAAI,IACCgD,GAAS,GAChBhD,GAAK8J,EAAK9G,GACV8G,EAAK9G,GAAS1H,EAAM0E,EAAIkB,GACxBlB,EAAKA,EAAIkB,EAAK,KAIdkc,EAAe,WAGjB,IAFA,IAAIpa,EAAQ,EACRqa,EAAI,KACCra,GAAS,GAChB,GAAU,KAANqa,GAAsB,IAAVra,GAA+B,IAAhB8G,EAAK9G,GAAc,CAChD,IAAIsa,EAAIvc,OAAO+I,EAAK9G,IACpBqa,EAAU,KAANA,EAAWC,EAAID,EAAIzc,EAAO4C,KAAK,IAAK,EAAI8Z,EAAE9hB,QAAU8hB,EAE1D,OAAOD,GAGX,GAAIN,EAAc,GAAKA,EAAc,GAAI,MAAM3b,WAAW,6BAE1D,GAAI0b,GAAUA,EAAQ,MAAO,MAC7B,GAAIA,IAAW,MAAQA,GAAU,KAAM,OAAO/b,OAAO+b,GAKrD,GAJIA,EAAS,IACXE,EAAO,IACPF,GAAUA,GAERA,EAAS,MAKX,GAHAF,GADAhZ,EA3EI,SAAUV,GAGlB,IAFA,IAAIhC,EAAI,EACJqc,EAAKra,EACFqa,GAAM,MACXrc,GAAK,GACLqc,GAAM,KAER,KAAOA,GAAM,GACXrc,GAAK,EACLqc,GAAM,EACN,OAAOrc,EAiEDsc,CAAIV,EAASJ,EAAI,EAAG,GAAI,IAAM,IAC1B,EAAII,EAASJ,EAAI,GAAI9Y,EAAG,GAAKkZ,EAASJ,EAAI,EAAG9Y,EAAG,GACxDgZ,GAAK,kBACLhZ,EAAI,GAAKA,GACD,EAAG,CAGT,IAFAqZ,EAAS,EAAGL,GACZC,EAAIE,EACGF,GAAK,GACVI,EAAS,IAAK,GACdJ,GAAK,EAIP,IAFAI,EAASP,EAAI,GAAIG,EAAG,GAAI,GACxBA,EAAIjZ,EAAI,EACDiZ,GAAK,IACVM,EAAO,GAAK,IACZN,GAAK,GAEPM,EAAO,GAAKN,GACZI,EAAS,EAAG,GACZE,EAAO,GACPlc,EAASmc,SAETH,EAAS,EAAGL,GACZK,EAAS,IAAMrZ,EAAG,GAClB3C,EAASmc,IAAiBxc,EAAO4C,KAAK,IAAKuZ,GAU7C,OALA9b,EAFE8b,EAAc,EAEPC,IADTjB,EAAI9a,EAAOzF,SACWuhB,EAClB,KAAOnc,EAAO4C,KAAK,IAAKuZ,EAAchB,GAAK9a,EAC3CA,EAAOZ,MAAM,EAAG0b,EAAIgB,GAAe,IAAM9b,EAAOZ,MAAM0b,EAAIgB,IAErDC,EAAO/b,M,mBC1HtBhJ,EAAOC,QAAU,6G,mBCAjBD,EAAOC,QAAU,6G,mBCAjBD,EAAOC,QAAU,uH,qBCCjB,IAAIG,EAAY,EAAQ,QACpBD,EAAW,EAAQ,OAAR,CAAkB,YAC7BqlB,EAAa7kB,MAAM2K,UAEvBtL,EAAOC,QAAU,SAAUK,GACzB,YAAcG,IAAPH,IAAqBF,EAAUO,QAAUL,GAAMklB,EAAWrlB,KAAcG,K,kCCNlE,SAASie,IAetB,OAdAA,EAAW/d,OAAOkE,QAAU,SAAU0O,GACpC,IAAK,IAAInJ,EAAI,EAAGA,EAAI0S,UAAUpZ,OAAQ0G,IAAK,CACzC,IAAIuU,EAAS7B,UAAU1S,GAEvB,IAAK,IAAI/B,KAAOsW,EACVhe,OAAO8K,UAAU5K,eAAe6K,KAAKiT,EAAQtW,KAC/CkL,EAAOlL,GAAOsW,EAAOtW,IAK3B,OAAOkL,IAGOqL,MAAM1V,KAAM4T,WAf9B,mC,qBCAA3c,EAAOC,QAAU,EAAQ,S,kCCEzB,IAAMwlB,EAAc,CAAH,s7B,sBAmCFA,O,qBCrCf,IAAI5C,EAAI,EAAQ,QACZ7R,EAAO,EAAQ,QACf0U,EAAmB,EAAQ,QAI/B7C,EAAE,CAAEzP,OAAQ,QAASoQ,OAAO,GAAQ,CAClCxS,KAAMA,IAIR0U,EAAiB,S,qBCXjB,IAAIC,EAAiB,EAAQ,QAEzBC,EAAkB,EAAQ,QAE1BC,EAAkB,EAAQ,QAM9B7lB,EAAOC,QAJP,SAAkBiH,GAChB,OAAOye,EAAeze,IAAQ0e,EAAgB1e,IAAQ2e,O","file":"static/chunks/pages/auto/library/[id]-06b3f4624c5f4e0a4aac.js","sourcesContent":["module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/9-bg-1764a918dd05c60b17b2cd8d68b7641e.png\";","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/car-bg-l-689a3d2d87af79b668d1626c6fd9aad3.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/0-bg-d6c127327093b92704c23c639492398b.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAPKADAAQAAAABAAAAPAAAAACL3+lcAAAFO0lEQVRoBe2bTYgcRRTHX83s4kVzUERvJgfJQUEyO+7Bg6whCIJ726h48CYRouziIYfAohDx4G3VgIs3DwrqbQRBggZBD+vMBsGAIrjmIkSJwS+MOztTvv/r6VDVH9NVNT3TM9l9sDvdPa+q/r+u6uruem+IDuzgDNxSZ0CNi0ZrrajTfJBqtERaP0BaHeW27uO/Q6T0HdKuVn/x55/8d4WP/UBKXaY+XaSF9ndKKS0+Jf8rFVggLy0+Srr3HOtcJk13B+lV9BuXa5Gqv0fHtr4sE74UYAHdXnyKqHeOIe8PgswrpOhHovo6NbY+LAN8ZGDdXniMh+MbDNrM01zKcUVtvizOqGbni1HqCwbW3y4eob298wz6xCgCvMsq+pTm5k6rh7Z2vMtygSBgfam5RD39MZG+K6TR0cuoa1RXK+pY+6JvXTXfArrTPMWwn1UHC8V8olmDaPEEcO5hrU/WaXtng3T/tGcb43VXtfPUOLKq1Ec9l4bmXJzEZxphIQwdsC2X84suLE49LENH999xqbAyH1V7QS20N4vaLwQeTFC4ZueLKqv2e9XliezxoolsKLDcerq9b6qdoHxOI8/e8/WHh92yhs/SuM9WduvxAY19efYWzfF++jO3h+UJivTn6SKzcEQdz3siy+xheTbG4+KsGmsXhgz9mcCEF4FxPxtniCntELTLy0y6xhRwdGb4rWeKrP19n/p9X0G9c1m9nAImeZ8t+RXPV6vh3/qqR0+/8h+tbnT9oPGaCpaEpYGjl/eEWzW7gF17c5d63Lutr/cCoGUhwhJvAQ+GwLLlUdGOCRtLAPTLb+/Guy6fy8lhbQHLGlTosoxL844+WbAoWme1J5q25KFVggXraobZpbHgVrF9wr0YD2NTCmA3VufpyUfc33ekfILJBsbqYqD9829gQaMYehaTE65Z04JhUUmCKQEsS6lmW07bH1zo0fHVG/TTL+Erq6X3bKw8Wh6O93jV2DSlD5u7LtuAPbu5S1eva3rm1TBowJbes7H4BJMNrFW0QB47F3zGsHG//nqdvKHHCgv9CSYbOI4IFIDGX1/e6fMTqG0+0GOHhbQEkw1say/ce+35eXr2RHrWdIGeCGwGgQ0cxXoy3PIPvX7KH3qisAkmG1hpBLe8zQd6orARCYJ1N80G1urnm994brhAVwALiismin0BImSpacl08NkGNOz9C3tWMVzTK+s36I+/OdxW5kOF1UrODpgMSwBzfFYn513D22EzD/p3a2BFFY30BOWgRVwQczbMHtIIRpdgecPbrHoisGgwwWQt4smr1PbCVR7WYYFsk4i3z252U8MbLhODRWC90bnHjCtbPTz4opXQHbyb1dMTg41Ut0xYHLKAxQdpBiUaoNdOztGdh4gO31ujd8/c5v+KF6ong8Ua0qh3MKwxW5ebuhAqOrQcUiUanaOFPRw5cE7FzFt9PQkLpFQP4+Cgl7e4l8ebt4HGxmHIB2l0FrOA09cwCxBHTiAZh5aJ1Inkl5w8r0xgiJLYDBJIZs1Yc15cCSi5wMLJ2TKMfm12mFmraM5XPBRY4qycLcPQ3fwqpuUbCYivDIsNQ+lQYDhIRF2pl7A91cYai6L/0F8IDCfJnUC2zLQaa3PJ74B8J2DhbNy+RtMIPUhbcu2LzPvwsMJRRo9+i+/WFSe58DWLYeyQuWPyeAOj8L5KPQSwTA6cLcPPaZO/T6NNZOoE5FmKdvwbxfZN+rB5kqJn732SIJ4C3w8/ATCh423p9eSPPBDYQqwnDn9U8COPWN/B58EZuEXOwP+24lTmNtu0GAAAAABJRU5ErkJggg==\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/4-bg-2ba649cdb13992cc0ec7e694af8386df.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/9-active-e75c0b944f82082ae0cc5fe4e2550291.png\";","const domainWhiteList = [\n 'pstatp.com',\n 'byteimg.com',\n 'toutiaoimg.com',\n 'bytexservice.com',\n]\n\nconst domainBlackList = ['qlogo.cn', '58cdn.com.cn']\n\nlet domainList = [\n 'sf1-ttcdn-tos.pstatp.com',\n 'sf3-ttcdn-tos.pstatp.com',\n 'sf6-ttcdn-tos.pstatp.com',\n]\n/**\n * 增加域名白名单\n * @param list\n */\nexport function addDomainWhiteList(list: string[]) {\n domainWhiteList.push(...list)\n}\n/**\n * 获取域名白名单\n */\nexport function getDomainWhiteList() {\n return domainWhiteList\n}\n/**\n * 增加域名黑名单\n * @param list\n */\nexport function addDomainBlackList(list: string[]) {\n domainBlackList.push(...list)\n}\n/**\n * 获取域名黑名单\n */\nexport function getDomainBlackList() {\n return domainBlackList\n}\n\nexport function setDomainList(list: string[]) {\n domainList = list\n}\nexport function getDomainList() {\n return domainList\n}\n","import { logger, metrics } from 'lib/slardar-utils'\n\nimport { getDomainBlackList, getDomainWhiteList } from './constant'\n\n/* eslint-disable complexity */\nexport function decodeUri(originStr: string): string | null {\n let origin = originStr\n if (!origin) {\n return null\n }\n const blackList = getDomainBlackList()\n // 匹配到黑名单,不进行打点\n if (blackList.some((domain) => origin?.includes?.(`${domain}/`))) {\n return null\n }\n const whiteList = getDomainWhiteList()\n if (!whiteList.some((domain) => origin?.includes?.(`.${domain}/`))) {\n logger.warn(`[motor/pc/view-image] not in domain white list url=${origin}`)\n metrics.counter('tosUri.decode.ignore', { url: origin })\n return null\n }\n\n /* eslint-disable prefer-destructuring */\n origin = origin.split('?')[0]\n // 原格式,如:https://sf1-ttcdn-tos.pstatp.com/obj/developer-baas/baas/ttcqr5/de057af34f101a4e_1605090421476.png\n const objUrlRegex = /\\/obj\\/(.*)/\n\n if (objUrlRegex.test(origin)) {\n const matches = origin.match(objUrlRegex)\n if (matches?.[1]) {\n return matches[1]\n }\n }\n // 遗留的图片格式0,如:https://p3.pstatp.com/large/1bf6000409257e13550d\n const legacyUrlRegex0 = /\\/(?:origin|large|medium|thumb|img)\\/([0-9a-f]{9,})/\n if (legacyUrlRegex0.test(origin)) {\n const matches = origin.match(legacyUrlRegex0)\n if (matches?.[1]) {\n return `mosaic-legacy/${matches[1]}`\n }\n }\n // 遗留的图片格式,如:https://p3.pstatp.com/avatar/100x100/1dd5000048d6334c26b4.png\n const legacyUrlRegex1 = /\\d+x\\d+\\/([0-9a-f]{9,})/\n if (legacyUrlRegex1.test(origin)) {\n const matches = origin.match(legacyUrlRegex1)\n if (matches?.[1]) {\n return `mosaic-legacy/${matches[1]}`\n }\n }\n\n // 遗留的图片格式2,如:https://p7.pstatp.com/large/pgc-image/a8c9c8f743174b259f21915df49f19a7\n const legacyUrlRegex2 = /[a-z]+\\/([0-9a-z-]+)\\/([0-9a-f]{9,})/\n if (legacyUrlRegex2.test(origin)) {\n const matches = origin.match(legacyUrlRegex2)\n if (matches && matches[1] && matches[2]) {\n return `${matches[1]}/${matches[2]}`\n }\n }\n\n // 遗留图片格式3,'https://p7.pstatp.com/list/300x196/pgc-image/123432866b864bc295ac12102aaf395f'\n const legacyUrlRegex3 = /list\\/\\d+x\\d+\\/([0-9a-z-]+)\\/([0-9a-f]{9,})/\n if (legacyUrlRegex3.test(origin)) {\n const matches = origin.match(legacyUrlRegex3)\n if (matches && matches[1] && matches[2]) {\n return `${matches[1]}/${matches[2]}`\n }\n }\n\n // 常见的图片格式,如:https://p7.pstatp.com/large/pgc-image/a8c9c8f743174b259f21915df49f19a7\n const normalUrlRegex = /(?:img)\\/([0-9a-z-]+)\\/([0-9a-f]{9,})/\n const matches = origin.match(normalUrlRegex)\n if (matches && matches[1] && matches[2]) {\n return `${matches[1]}/${matches[2]}`\n }\n logger.warn(`[motor/pc/view-image] can not decode url=${origin}`)\n metrics.counter('tosUri.decode.miss', { url: origin })\n return null\n}\n","import { decodeUri } from './decode'\nimport applyHttpsImage from 'lib/apply-https-img'\n/**\n * 是否支持webp格式\n * @type {boolean}\n */\nconst canUseWebp = (() => {\n if (typeof document === 'undefined') {\n return false\n }\n const elem = document.createElement('canvas')\n if (elem && elem.getContext && elem.getContext('2d')) {\n return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0\n }\n return false\n})()\n\nfunction getDomain() {\n const domainList = [\n 'sf1-ttcdn-tos.pstatp.com',\n 'sf3-ttcdn-tos.pstatp.com',\n 'sf6-ttcdn-tos.pstatp.com',\n ]\n return domainList[Math.floor(Math.random() * domainList.length)]\n}\n\nfunction getSize(width = 0, height = 0, autoPixelRatio = false) {\n if (!width && !height) {\n return 'noop'\n }\n\n // 服务器端默认2倍大小,客户端根据实际的window?.devicePixelRatio\n if (autoPixelRatio) {\n let pixelRatio = 2\n if (typeof window !== 'undefined' && window?.devicePixelRatio) {\n pixelRatio = window?.devicePixelRatio\n }\n return `${Math.abs(width * pixelRatio)}x${Math.abs(height * pixelRatio)}`\n }\n return `${Math.abs(width)}x${Math.abs(height)}`\n}\n\nfunction getExt(src: string): string {\n if (canUseWebp) {\n return 'webp'\n }\n const matches = src.match(/(?:\\.)(\\w+)(?:\\?.*)?$/)\n if (!matches || !matches[1]) {\n return 'image'\n }\n\n if (!canUseWebp && matches[1] === 'webp') {\n return 'image'\n }\n\n return matches[1]\n}\n\ntype GenImgAttrsData = {\n src: string\n unoptimized: boolean\n width?: number\n height?: number\n autoPixelRatio?: boolean\n}\n\nexport function getOptimizedImage(params: GenImgAttrsData): string {\n const { src, unoptimized, width, height, autoPixelRatio } = params\n if (unoptimized) {\n return applyHttpsImage(src)\n }\n // 获取uri,如果不是tos地址,就不匹配\n const uri = decodeUri(src)\n if (!uri) {\n return applyHttpsImage(src)\n }\n\n const domain = getDomain()\n const size = getSize(width, height, autoPixelRatio)\n const ext = getExt(src)\n return `//${domain}/img/${uri}~${size}.${ext}`\n}\n","import React from 'react'\n\ninterface IProps {\n zoomHeight: string\n children: React.ReactNode\n className?: string\n loadImg?: boolean\n [key: string]: any\n}\n\nconst ImageZoom: React.FC = ({\n zoomHeight,\n children,\n className = '',\n loadImg = true,\n ...restProps\n}) => {\n const styles: any = {\n display: 'inline-block',\n position: 'relative',\n }\n\n if (zoomHeight) {\n Object.assign(styles, {\n paddingBottom: zoomHeight,\n width: '100%',\n })\n }\n\n return (\n \n {children}\n\n \n \n )\n}\n\nexport default ImageZoom\n","import * as React from 'react'\nimport classnames from 'classnames'\nimport { useInView } from 'react-intersection-observer'\nimport { getOptimizedImage } from './utils'\nimport { logger, metrics } from 'lib/slardar-utils'\nimport ImageStyles from './style'\nexport { default as ImageZoom } from './image-zoom'\n\n// 常用的一些图片\nexport const userLoading = require('static/user-loading.png')\nexport const carLoading = require('static/car-bg-l.png')\nexport const logoLoading = require('static/dongchedi-logo.svg')\n\nexport type ImageProps = {\n /**\n * 图片宽度\n */\n width: number\n /**\n * 图片高度\n */\n height: number\n /**\n * 图片资源地址\n */\n src: string\n /**\n * className\n */\n className?: string\n /**\n * alt\n */\n alt?: string\n /**\n * 是否懒加载\n */\n lazy?: boolean\n /**\n * 不使用图片格式优化,主要是webp\n * @default false\n */\n unoptimized?: boolean\n /**\n * 是否开启加载完毕后的动画,默认开启\n */\n useTransition?: boolean\n /**\n * hover动画\n */\n hoverTransition?: boolean\n /**\n * intersection observer的rootMargin\n * @default 0px 100px\n */\n rootMargin?: string\n /**\n * 自定义图片的行内样式\n */\n style?: React.CSSProperties\n /**\n * 自定义默认图片\n */\n cusDefaultImg?: string\n /**\n * 自定义错误图片\n */\n errorImg?: string\n /**\n * 是否自动适配 设备像素比 服务器端默认2倍,客户端根据实际的devicePixelRatio\n */\n autoPixelRatio?: boolean\n}\n\ntype ImgElementStyle = NonNullable\n\nconst classNamePrefix = 'motor-pc-image'\n\nconst defaultImg =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIvPg=='\n\nexport const Image: React.FC = (props) => {\n const {\n src,\n style,\n lazy = false,\n className,\n rootMargin = '500px 100px',\n unoptimized = false,\n useTransition = true,\n hoverTransition = false,\n width,\n height,\n alt = '',\n cusDefaultImg = defaultImg,\n errorImg,\n autoPixelRatio = false,\n } = props\n\n const isBase64 = src?.startsWith?.('data:')\n // 为data:时,不进行预加载和优化\n const isLazy = isBase64 ? false : lazy\n\n const notUseWebp = isBase64 ? true : unoptimized\n\n const [setRef, isIntersected] = useInView({\n rootMargin,\n threshold: 0,\n triggerOnce: true,\n })\n const inView = !isLazy || isIntersected\n\n let imgStyle: ImgElementStyle | undefined = {\n visibility: inView ? 'inherit' : 'hidden',\n }\n\n const realSrc = React.useMemo(() => {\n if (!inView) {\n // 不可见时,设置一个透明的背景图\n return cusDefaultImg\n }\n return getOptimizedImage({\n src,\n unoptimized: notUseWebp,\n width,\n height,\n autoPixelRatio,\n })\n }, [inView, src, width, height, notUseWebp, autoPixelRatio])\n\n const imgRef = React.useRef(null)\n\n // 图片加载错误重试的次数\n const retryTimesRef = React.useRef(0)\n\n if (unoptimized) {\n imgStyle = undefined\n }\n\n const setRefCallbck = React.useCallback(\n (ele) => {\n imgRef.current = ele\n setRef(ele)\n },\n [setRef, imgRef]\n )\n React.useEffect(() => {\n retryTimesRef.current = 0\n }, [src, width, height, notUseWebp])\n return (\n {\n logger.error(\n `[motor-fe/pc/image onError] error message: src=${realSrc}`,\n {\n src,\n }\n )\n metrics.counter('motor-fe/pc.image.onerror', { realSrc, src })\n if (retryTimesRef.current > 0) {\n /* eslint-disable no-unused-expressions */\n imgRef.current?.setAttribute('src', errorImg || cusDefaultImg)\n return\n }\n retryTimesRef.current += 1\n if (src === realSrc) {\n /* eslint-disable no-unused-expressions */\n imgRef.current?.setAttribute('src', errorImg || cusDefaultImg)\n return\n }\n /* eslint-disable no-unused-expressions */\n imgRef.current?.setAttribute('src', src)\n }}\n />\n )\n}\n\nexport { ImageStyles }\n","var _Array$isArray = require(\"../core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime-corejs2/helpers/toArray\"));\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.regexp.search\");\n\nfunction getQuery(name, search) {\n if (search === void 0) {\n search = typeof window !== 'undefined' && window.location && window.location.search.substr(1);\n }\n\n var queries = {};\n search && search.split('&').forEach(function (c) {\n if (c === '') {\n return;\n }\n\n var _c$split = c.split('='),\n _c$split2 = (0, _toArray2.default)(_c$split),\n key = _c$split2[0],\n values = _c$split2.slice(1);\n\n queries[decodeURIComponent(key)] = decodeURIComponent(values.join('='));\n });\n return name ? queries[name] : queries;\n}\n\ngetQuery.default = getQuery;\nvar _default = getQuery;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/dcar-score-cd1674c77c03f1c9feee12721e0930f5.png\";","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/0-active-d0accbc7f276f8dc3a8a9de82cdf8fa8.png\";","const buildUrl = (newOptions: any, allConditionKeys: string[][]) => {\n const arr: any = []\n allConditionKeys.forEach((stringArr: string[]) => {\n arr.push(\n stringArr.map((item: string) => {\n if (newOptions[item] !== undefined && newOptions[item].length !== 0) {\n return newOptions[item].map((option: any) => {\n return option.param.toString().replace('-', '!')\n })\n } else {\n return 'x'\n }\n })\n )\n })\n const queryArr = arr.map((item: any, i: number) => {\n if (i !== 9 && i !== 10) {\n return item.join('_')\n } else {\n if (item.filter((q: string) => q !== 'x').length === 0) {\n return 'x'\n }\n return item\n .map((q: string, i: number) => {\n if (q !== 'x') return i + 1\n return 0\n })\n .filter((q: number) => q !== 0)\n .join('_')\n }\n })\n return queryArr.join('-')\n}\nexport default buildUrl\n","import classNames from 'classnames'\nimport React from 'react'\n\ninterface IStars {\n starIcon: string\n starVacantIcon?: string\n maxScore?: number\n score: number\n className?: string\n starWidth?: number\n starHeight?: number\n}\n\nexport default function Stars(props: IStars) {\n const {\n starIcon,\n starVacantIcon,\n score,\n maxScore,\n className,\n starWidth = 13,\n starHeight = 12,\n } = props\n const stars = []\n for (let i = 1; i <= score; i++) {\n stars.push(0)\n }\n const intersection = score % 1\n if (intersection !== 0) {\n stars.push(1)\n }\n\n if (starVacantIcon && maxScore) {\n for (let i = Math.ceil(score); i < maxScore; i++) {\n stars.push(2)\n }\n }\n\n return (\n

\n {stars.map((ele, index) => {\n switch (ele) {\n case 0:\n return \n case 1:\n return \n case 2:\n return \n default:\n return null\n }\n })}\n \n

\n )\n}\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/user-loading-56fd747778e1578a5112cca26875b9e7.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/1-active-a01157bc0801e6ea099b1e2d76ba6ac1.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAAD00lEQVRIDcVWy24cRRStW109M512HkYOzHhje2YQiaVsEZ8AC8SaP2DBJgjnQcQCFAEKWQSJBT+QP0iyYYeUJSskZ+N44k1mIFi2Sfc8+lHFPe30qHvcLU8PUShpVDX3nntO3aq61SXE/9RoEd3BYOB6Q32fDEnXpU+bzaZflUdWDQDe88wXRotPtDEfe56+ughH5Yx7vYML2oz3bKXOQjCMopeSGmsbG8uHVSZQOeM4nnxpjDjbcOqEH8awVREFtlLGz5//szIc+Xu1uu24rpPE+v7IBJNwdMZx11ZXz/097wQqZTwc+jeMEE6jUZ9OGGPY4JtXtFLGz569aMU62rVtu+EuOTkN3xuJMAzHllTt9fWL/Zyz5M/cGUdR9BXvZ805Uz9BBRt8wJxwlhimSzbr7/f7F0cjc5kJN42hTT4On9Uayua9nYUm/3mvRTCOQiHML0Rmm0hsOw49abVaL4oCEuHd3f77WtMHfNQ2iYjF4issuJwGSCljpRS5Sw3J/tSc6w0H+N5Yc9ZGa22lToYfEFl/sP+JMGJbCP242139nXZ2+h8ZYR4BSCQjZbMMSWlZlrCUFOjZkPLM1WttRBzHIo500mueShSy1WjFEzfM/6GS0vixFqJWr5mlJUfNxXwKCBOVUgnbngJxlqTnofQC4pU1st1e/Y0kbcGAmpxCX/PguN4DXlTaarff+TU51d126y5P4/pkDPHxaxcHJ7ihAS3klNu8p08HN3g/vq/Xa2K2VhddANT4ZBII3tebnU7zh5QnV8eJQ8pbAKI8/msDB7h4w29lRcGbE4bh3XbzO16Gr3lpuDwWF08yZQ5wgRPc2XZCGE6us9tcW99itmHAd0LFhpgkU6JvEq6C+EJh4NjxAL3JHwOYTm1pDHM8LAOXCnOdv4cgyyqFlHFOY1KOImApq9byEh96s7gw8X0FjuJWKmw4Y0tRXBx2uhWx4ChDll6RfMNsWrj3ClrMd+x4PEk8/BCYLm0Wili+Ey5nbdlxYcb8JZH8mOrwlyKL5Qtf8wtzJI4OX+K5M8QPY9jgyzbEMkcXXFl7Oi407u39ucbfknq6v7HWSU0fHXmGS2XEX5gf8cbCD2PY4EPtAouGWHCAKxXL9oVLyZ/U6aEAWRCGmp8YAT/gf3ZdcWfm436dHw13fV9cC4Lgc8bWarYtlX28Wq+4ellRjAszNtKswAlRvKX4NXdPkrXe7ba2ZkQBE7DBBwywiEHscaPzrwa5LveRSD37+/vnDg7DO0boAyXVTxsbbw9S3zx9r/dXM9bxVV6lZaLGVqfz1tE8cW8E8y/iZ9jjinHmjAAAAABJRU5ErkJggg==\"","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/1-bg-5bdd947e91cf02742d662f8ccbd45de1.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/6-bg-ba41baf607731169d29ef933ff8eb927.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAPKADAAQAAAABAAAAPAAAAACL3+lcAAADKUlEQVRoBe2bv2sUQRTHv7PZs1AQFBEt1c7CFGoKO49gZSlRrGxEsLnDRhD8UYhgmaABWwv9A5JGCbGKRbSJYLCQpPMXkqAYjHd7u87bZWFuZ/Zub3/c7izzIOzO7OzM+7zvzOyy9wIYMxEwEdA5AmyY897a1DH03CbgHYXH7GHtS7nOPAdgXzFhLbPJ1c1BPsQCe2sX9sHZegy4N+Ehtt2gzsd+jXFPYc3DPnibTb7eUY2vBAlgf67y20+qbqp8HcM67ENTKmhL6TwpqyssAZHv/uyU6SSFvQ9nj6Pb+8xvkq7Jt1e4hqa3bZ+IrmlZ4Q7foHSHJR2Iwd9s+0WRgS0c6W+ic4k/WSImA1f10RNxPFFRwSIDJ+pJ30YGWF/tknluFE4WJ31bGYX11S6Z51oo/P6TC9dNBjSsVeWBF1Z6uHz/H1qz3VygKw1MsO25Dn8lBhbeOrlAVxZYhA2nKUHfetIJi6mOlQRWwRLdBPd2+kw2lyv3jWqRq9ie6/rTWJSQYGdbDVw8l83lbOESPNr5KxRSnpKytDnRmhUtL1jqMxfgl0s9NFu72PjCv6GltEDZYIMSu8gTlvrNDEywd5518H3bw5UH6aAJtmhlwyBmAg5hQ11/bGNk6HHCZlb446bLPx312yjQ44bNDPzwegNXp+VdMwl0GbCZgamDRzdGhy4LNhfgUaHLhM0NOCl02bDkp7wAqTal0fQme7HEf8wTjNb0pbu7+PUHhb5UCEPGnuYKTKPEQW/9ln3I+6VCHkGuyfQclrsLauI2MrF9GbA0fiHA1PEg6LJgCwWOgy4TlnzKfQ1Tp6KR0ocPAM9fOdi/18K9aw00Txc2scShleeFA9Oo7ZmG/6f0YMyV5YV6zKDhcAY4jERdj0bhuiobchmFw0jU9WgUhp+oWRN9FSyywi6+1QSXY/AM24jJwHusZZ7DFv0YGblNgyIx8HTiqKcSMDv1bsNPwY221K5szUfzLAlBAva5eL4xV3ldO8bQYT99mDMoTAns5xnzfGMw66lW05umMfkckytN/ENThP10Ysc7r8W/ANjsTbAkFdKaKhMBE4FaROA/pAdJA850bSEAAAAASUVORK5CYII=\"","var _Array$from = require(\"../core-js/array/from\");\n\nvar _isIterable = require(\"../core-js/is-iterable\");\n\nfunction _iterableToArray(iter) {\n if (_isIterable(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return _Array$from(iter);\n}\n\nmodule.exports = _iterableToArray;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAeCAYAAACiyHcXAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIaADAAQAAAABAAAAHgAAAAA1Ma9XAAAD/UlEQVRIDeVVS29bRRT+zvUjdosjKAlFBRZ0QdoGkqr0IQiIhAWw4U/AEiqBEBvY9KWyQEJIBfFfWJBKlXi0TdWmOC6CQqUqqC2ltElT2732PXxn7LF9Hcev7GCk65k5c86cb77zzRj4LzS98k5us+cINrOB/nlyF7LP3dLlLyc2s8+mQKAcHgGiDKrVo5sBIcMG6/VPplBNXgTSgsSIAqm98swHi8PsNzwTYXgMUVWgVZJR4WGiY8MAsJihmNCrH+6HBucgaSDBDykgYJ/MHpAdh88PCmY4JqLwhGMAEWJ9NTw+KADzHxiEXnl3honfJP0EUKmBsJKoA/SWLp+aGRTIQCBUjyQh0WcuuYFwQOq9ZyWqnFSdTw4CZENN6C+zYygldkNSe9wXpDgemWLht7v6mwZME66nJvzY5kH6BueXeXMKSKSWIJklZDIFGX37didwDRC6+MpjCIsnyOskd9xDsY3XEtQTtScTn3iE7nVh+j6o2zwwZzdb+i+CWEL0II+1bz6VZ0/fNVBN2hLJEKGy3pgmEAZ4uq3e9c8kZHabS4LhNqYubOxtpo2I6wFt5uvHto7KOCp3X8PKmUehoRlcazBhMy0cfBwPKt8RwxTE5FI/oafen7RxQmPJM+JLw96t1+2eheoKcO9HoFhYxJbE67L77N8OAX9iIMyo518cYzfP0fMxmhuJDVgb3a0gY34EFBWB1QUm/822/5nfnOxfiGljHQjz1AuvjrNu8xCZbAiudfPWcTsgv4YQuJ9n8qu2Iz/JI9gyJ/vOmC5irSMI89BLLz+BSolA0iZSU3yN5tYX0ie0NfNJkCHLV7rGj8mdDjgXijGZmZPp729xtq5tCMI89fKh7RQrS8Pr6UF4Xfi5B2B95Q5P/itL8LCZSFBAOjUnL/x0s2mMj7qCMFfNH3gS5eTv1Ec2XhovPGOB25SvEYS7cRZWb1JENtgpk+dueEunvicIC9KFQyu8BbkYCGPEyqE8dfk6e17VdU1WKcLRdeY2Q89nWy/M7GCCnLvvVmO7967WfAOq/9Tq3xGAZdKci29L2j7tCQJRaYKbMY5J/WcgQgJ4aDqztS7NxXdZ51JvEMAut4Ulrv1TkoH7/Pj49Ndq8V18m8/2Rk6CidphjQlfjhb1bxTn7Rbfo/XPhG0U8QEyIbomNxHIR0iOPO16cN659WSiDxDachLWX0AhyMfMt1P2LXwhe39Ytt7mzu7WW9G0xrfam+OuV1T/mM3gzsoay0GwcpvP+OdIbvtapr9da24RH+mlN7by0XoPqgSqYwQdYdvoVv5tl+KezVl3EBdfegrV8lmonEI295VMnqYi+2uan30ExdX3IXqYz/lBY6y/yP+z178RcGR5dDNVYAAAAABJRU5ErkJggg==\"","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/auto/library/[id]\",\n function () {\n return require(\"private-next-pages/auto/library/[id].tsx\");\n }\n ]);\n ","module.exports = \"data:image/png;base64,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\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/4-active-fb195d6b2dc2f5066bcf547b10286700.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/7-active-ee2f747e38ce083c9e6b6f154716233e.png\";","/* 区分是获取品牌还是条件的汽车列表 */\n\nimport React, { useEffect, useReducer, createContext } from 'react'\n\ninterface IProps {\n children: React.ReactChild[]\n initProps: ISelectedOptions\n}\ninterface IOption {\n param: number | string\n text: string\n more?: string\n}\ninterface ISetOptionAction {\n type: 'setOption'\n payload: {\n key: string\n } & IOption\n}\n\ninterface ISetSingleOptionAction {\n type: 'setSingleOption'\n payload: {\n key: string\n } & IOption\n}\ninterface IRemoveOptionAction {\n type: 'removeOption'\n payload: {\n key: string\n param: string | number\n }\n}\ninterface IClearOptionAction {\n type: 'clearOptions'\n}\ninterface IResetOptionsAction {\n type: 'resetOptions'\n payload: ISelectedOptions\n}\ntype IAction =\n | ISetOptionAction\n | ISetSingleOptionAction\n | IRemoveOptionAction\n | IClearOptionAction\n | IResetOptionsAction\n// 已选中的条件\n// interface ISelectedOptions {\n// [key: string]: Partial\n// }\nexport interface ISelectedOptions {\n [key: string]: IOption[]\n}\n// const state = {\n// brand: {\n// param: 2,\n// text: '宝马'\n// }\n// }\ninterface IContext {\n state: ISelectedOptions\n dispatch(param: ISetOptionAction): void\n dispatch(param: ISetSingleOptionAction): void\n dispatch(param: IRemoveOptionAction): void\n dispatch(param: IClearOptionAction): void\n dispatch(param: IResetOptionsAction): void\n}\n\nconst initOptions = {}\n\nfunction reducer(state: ISelectedOptions, action: IAction) {\n switch (action.type) {\n case 'setOption': {\n const options = state[action.payload.key] || []\n return {\n ...state,\n [action.payload.key]: options.concat([\n {\n param: action.payload.param,\n text: action.payload.text,\n },\n ]),\n }\n }\n case 'setSingleOption': {\n return {\n ...state,\n [action.payload.key]: [\n {\n param: action.payload.param,\n text: action.payload.text,\n },\n ],\n }\n }\n case 'removeOption': {\n const options = state[action.payload.key] || []\n return {\n ...state,\n [action.payload.key]: options.filter(\n (option) => option.param !== action.payload.param\n ),\n }\n }\n case 'clearOptions':\n return initOptions\n case 'resetOptions':\n return {\n ...action.payload,\n }\n default:\n return initOptions\n }\n}\nconst ContextStore = createContext({\n state: initOptions,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n dispatch: () => {},\n})\n\nconst ContextProvider = (props: IProps) => {\n const { children, initProps } = props\n const [state, dispatch] = useReducer(reducer, initProps || initOptions)\n // if (typeof window !== 'undefined') {\n // window.state = state\n // }\n useEffect(() => {\n dispatch({\n type: 'resetOptions',\n payload: initProps,\n })\n }, [initProps])\n return (\n \n {children}\n \n )\n}\n\nexport { ContextStore, ContextProvider }\n","/* eslint-disable no-unused-expressions */\n/* eslint-disable array-callback-return */\n/* 左边的品牌列表 */\nimport React, { useRef, useState, useEffect } from 'react'\nimport { useRouter } from 'next/router'\nimport classnames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { Image } from 'Components/view-image'\nimport { ContextStore } from './reducer'\n\nimport { IConditionsProps, IInfoProps, ISortProps } from './interface'\nimport Link from 'next/link'\n\ninterface IProps {\n letters: string[]\n brands: IInfoProps[][]\n}\n\nconst DEFAULT_LETTERS = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n]\n\nexport default function Brand({ letters, brands }: IProps) {\n const { state, dispatch } = React.useContext(ContextStore)\n const router = useRouter()\n const [currentLetter, setCurrentLetter] = useState('hot')\n const [currentId, setCurrentId] = useState(-1)\n function renderLetters(letters: string[]) {\n return (\n
    \n {\n setCurrentLetter('')\n const href = window.location.pathname\n router.push(href, href)\n }}\n >\n 不限\n \n {\n setCurrentLetter('hot')\n }}\n >\n 热门\n \n {letters.map((letter: string) => (\n ) => {\n e.preventDefault()\n e.stopPropagation()\n sendTeaCommEvent('click_brand_initial_index', {\n initial: letter,\n })\n setCurrentLetter(letter)\n }}\n >\n {letter}\n \n ))}\n \n
\n )\n }\n\n function renderBrands() {\n return (\n
\n {brands?.map((brand: IInfoProps[], index: number) => {\n return (\n \n {brand.map((item: IInfoProps) => {\n if (item.type === 1001) {\n return (\n
\n {\n setCurrentId(item.info.brand_id)\n sendTeaCommEvent('clk_event', {\n event_id: 'car_select_brand',\n brand_id: `${item.info.brand_id}`,\n brand_name: item.info.brand_name,\n })\n let href = window.location.pathname\n if (item.info.brand_id !== currentId) {\n href += `?key=brand¶m=${item.info.brand_id}&text=${item.info.brand_name}&more=${currentLetter}`\n }\n router.push(href, href)\n }}\n >\n \n {item.info.brand_name}\n

\n
\n )\n }\n return null\n })}\n
\n )\n })}\n \n \n )\n }\n\n useEffect(() => {\n if (letters) {\n if (state.brand) {\n const id = state.brand[0]?.param as number\n setCurrentId(id)\n if (state.brand[0]?.more) {\n setCurrentLetter(state.brand[0]?.more)\n return\n }\n // eslint-disable-next-line no-unused-expressions\n brands?.forEach((brand: any) => {\n brand.forEach((item: any) => {\n if (item?.info?.brand_id === id) {\n setCurrentLetter(item?.info?.pinyin)\n }\n })\n })\n } else {\n setCurrentId(-1)\n }\n }\n }, [state])\n\n function renderDefaultBrands() {\n return (\n
\n \n {new Array(12).fill(undefined).map((item, index) => {\n return (\n
\n \n \n \n

\n
\n )\n })}\n
\n \n \n )\n }\n\n return (\n
\n

品牌

\n
\n {letters ? renderLetters(letters) : renderLetters(DEFAULT_LETTERS)}\n {brands ? renderBrands() : renderDefaultBrands()}\n
\n
\n )\n}\n","import getUrl from 'lib/url'\nimport { ISelectedOptions } from './reducer'\n\nexport const getCars = (queryStr = '', cityName = '北京', offset = 0) => {\n return fetch(getUrl(`/motor/pc/car/brand/get_select_series`), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: `offset=${offset}&limit=30&is_refresh=${\n offset ? 0 : 1\n }&city_name=${encodeURIComponent(cityName)}&${queryStr}`,\n }).then(async (res) => {\n const data = await res?.json()\n if (data?.status === 0) {\n return data?.data\n }\n return null\n })\n}\n\nexport const getParamsFromState = (state: ISelectedOptions) => {\n return Object.entries(state)\n .filter(([, value]) => !!value && value.length > 0)\n .map(([key, value]) => {\n if (!value) {\n return ''\n }\n return `${key}=${value.map((item) => item.param).join(',')}`\n })\n .join('&')\n}\n","/* 符合条件的汽车的列表 */\nimport React, {\n useRef,\n useState,\n useEffect,\n useContext,\n useCallback,\n} from 'react'\nimport Link from 'next/link'\nimport fetch from 'lib/decorated-fetch'\nimport classnames from 'classnames'\nimport ScrollLoader from 'Components/scroll-loader'\n\nimport getUrl from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nimport { Image } from 'Components/view-image'\nimport Loading from 'Components/loading'\nimport { useCityName } from 'Components/hooks'\n\nimport { ContextStore } from './reducer'\nimport { ISortProps, ICarProps } from './interface'\n\nimport { getZT } from 'lib/zt-util'\n\ninterface Props {\n sort: ISortProps[]\n}\ninterface ICarData {\n /* 汽车总数量 */\n series_count?: number\n /* 汽车列表 */\n series: ICarProps[]\n}\n\nimport Stars from '../home/components/dong-che-fen/stars'\nimport { getParamsFromState } from './helper'\nimport renderList from './car-list-item'\n\nconst star = require('./static/star.png')\nconst star_black = require('./static/w-star.png')\nconst carBg = require('static/car-bg-l.png')\n\nexport default function CarList({ sort }: Props) {\n // 已选中的条件\n const { state, dispatch } = useContext(ContextStore)\n // 获取当前城市\n const cityName = useCityName() || ''\n /* 懒加载剩余数量 */\n const count = useRef(0)\n /* 懒加载当前第几页 */\n const offset = useRef(0)\n\n const [loading, setLoading] = useState(true)\n /* 符合条件的汽车列表 */\n const [carData, setCarData] = useState({\n series: [],\n series_count: undefined,\n })\n\n // }, [state, state, cityName])\n\n // 处理请求参数,序列化已选择条件\n const getParams = useCallback(() => {\n return getParamsFromState(state)\n }, [state])\n // 统计用参数\n function getStat() {\n return Object.keys(state).reduce((acc: any, curr: string) => {\n acc[curr] = state[curr].map((item) => item.param).join(',')\n return acc\n }, {})\n }\n // 获取汽车类型\n const getCars = useCallback(() => {\n setLoading(true)\n return fetch(getUrl(`/motor/pc/car/brand/get_select_series`), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: `offset=${offset.current}&limit=30&is_refresh=${\n offset.current ? 0 : 1\n }&city_name=${encodeURIComponent(cityName)}&${getParams()}`,\n })\n }, [cityName, getParams])\n\n useEffect(() => {\n offset.current = 0\n if (cityName) {\n getCars()\n .then((data) => {\n if (data.status === 0) {\n count.current = data.data.series_count\n setCarData(data.data)\n }\n setLoading(false)\n })\n .catch((err) => {\n setLoading(false)\n // no-op\n })\n }\n }, [cityName, getCars])\n // 懒加载\n function loadMoreHandler() {\n count.current -= 30\n offset.current += 1\n getCars()\n .then((data) => {\n if (data.status === 0) {\n sendTeaCommEvent('load_garage_series', {\n list_item_num: data.data.series.length,\n })\n setCarData({\n series_count: data.data.series_count,\n series: [...carData.series, ...data.data.series],\n })\n }\n setLoading(false)\n })\n .catch(() => {\n setLoading(false)\n })\n }\n\n function renderButtons(id: number, name: string, car_ids: number[]) {\n return (\n
\n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'series_card_fun_btn',\n car_series_id: `${id}`,\n car_series_name: name,\n button_name: '询底价',\n })\n }}\n >\n 询底价\n \n \n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'series_card_fun_btn',\n car_series_id: `${id}`,\n car_series_name: name,\n button_name: '图片',\n })\n }}\n >\n 图片\n \n \n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'series_card_fun_btn',\n car_series_id: `${id}`,\n car_series_name: name,\n button_name: '配置',\n })\n }}\n >\n 配置\n \n \n \n
\n )\n }\n\n function renderList(data: ICarProps, index: number) {\n return (\n \n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'car_series_card_content',\n car_series_name: data.outter_name,\n car_series_id: `${data?.id}`,\n brand_id: `${data?.brand_id}`,\n brand_name: data?.brand_name || '',\n })\n }}\n >\n \n \n

\n \n {data.outter_name || data.info?.series_name}\n

\n
\n \n {data.dcar_score > 0 ? (\n <>\n {data.dcar_score}\n
\n \n
\n \n ) : (\n 暂无评分\n )}\n
\n

\n {data.dealer_price || data.info?.dealer_price}\n

\n \n \n {renderButtons(\n data.id || data.info?.series_id,\n data.info?.series_name,\n data.car_ids\n )}\n \n \n )\n }\n\n function isOptionActive(option: ISortProps, index: number): boolean {\n if (!option) {\n return false\n }\n // 如果没有删选默认显示第一个\n if (!state[option.key] && index === 0) {\n return true\n }\n if (\n state[option.key] &&\n state[option.key].some((item) => item.param === option.param)\n ) {\n return true\n }\n return false\n }\n\n return (\n \n
\n {carData.series_count} 车系符合条件\n
\n {sort.map((item: ISortProps, index) => {\n return (\n 0,\n })}`}\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation()\n sendTeaCommEvent('clk_event', {\n event_id: 'series_card_sort_btn',\n button_name: item.text,\n })\n dispatch({\n type: 'setSingleOption',\n payload: {\n key: item.key,\n text: item.text,\n param: item.param,\n },\n })\n }}\n >\n {item.text}\n \n )\n })}\n
\n
\n {carData.series_count === 0 && (\n
抱歉,未找到合适车型
\n )}\n
\n = 0 ? false : true}\n loadMoreHandler={loadMoreHandler}\n >\n
    \n {carData.series.map((item: ICarProps, index: number) =>\n renderList(item, index)\n )}\n
\n {loading && }\n \n
\n \n
\n )\n}\n","import React from 'react'\nimport Link from 'next/link'\nimport getUrl from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { Image } from 'Components/view-image'\nimport { ISortProps, ICarProps } from './interface'\nimport { getZT } from 'lib/zt-util'\nimport Stars from '../home/components/dong-che-fen/stars'\n\nconst star = require('./static/star.png')\nconst star_black = require('./static/w-star.png')\nconst carBg = require('static/car-bg-l.png')\n\ninterface Props {\n sort: ISortProps[]\n}\ninterface ICarData {\n /* 汽车总数量 */\n series_count?: number\n /* 汽车列表 */\n series: ICarProps[]\n}\n\nfunction renderButtons(id: number, name: string, car_ids: number[]) {\n return (\n
\n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'series_card_fun_btn',\n car_series_id: `${id}`,\n car_series_name: name,\n button_name: '询底价',\n })\n }}\n >\n 询底价\n \n \n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'series_card_fun_btn',\n car_series_id: `${id}`,\n car_series_name: name,\n button_name: '图片',\n })\n }}\n >\n 图片\n \n \n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'series_card_fun_btn',\n car_series_id: `${id}`,\n car_series_name: name,\n button_name: '配置',\n })\n }}\n >\n 配置\n \n \n \n
\n )\n}\n\nexport default function renderList(data: ICarProps, index: number) {\n return (\n \n \n {\n sendTeaCommEvent('clk_event', {\n event_id: 'car_series_card_content',\n car_series_name: data.outter_name,\n car_series_id: `${data?.id}`,\n brand_id: `${data?.brand_id}`,\n brand_name: data?.brand_name || '',\n })\n }}\n >\n \n \n

\n \n {data.outter_name || data.info?.series_name}\n

\n
\n \n {data.dcar_score > 0 ? (\n <>\n {data.dcar_score}\n
\n \n
\n \n ) : (\n 暂无评分\n )}\n
\n

\n {data.dealer_price || data.info?.dealer_price}\n

\n \n \n {renderButtons(\n data.id || data.info?.series_id,\n data.info?.series_name,\n data.car_ids\n )}\n \n \n )\n}\n","/* for spider ssr */\nimport React from 'react'\nimport { ISortProps, ICarProps } from './interface'\nimport renderList from './car-list-item'\n\ninterface Props {\n spiderList: any\n}\n\nexport default function CarList({ spiderList }: Props) {\n return (\n \n {spiderList.series_count === 0 && (\n
抱歉,未找到合适车型
\n )}\n
\n
    \n {spiderList.series.map((item: ICarProps, index: number) =>\n renderList(item, index)\n )}\n
\n
\n \n
\n )\n}\n","// 已选择的条件\nimport React from 'react'\nimport { useRouter } from 'next/router'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport buildUrl from 'Pages/auto/home/utils'\nimport { ContextStore } from './reducer'\nimport { IConditionsProps } from './interface'\n\ninterface IProps {\n conditions: IConditionsProps[]\n}\n\nexport default function Select({ conditions }: IProps) {\n const { state, dispatch } = React.useContext(ContextStore)\n const router = useRouter()\n const entries = Object.entries(state)\n const filterList = ['sort', 'sub_brand_id']\n const allConditionKeys = React.useMemo(() => {\n return conditions.map(item => {\n return Array.from(\n new Set(item.data.map(item => item.key).filter(item => !!item))\n )\n })\n }, [conditions])\n\n if (\n !entries ||\n !entries.length ||\n !entries.filter(([key]) => filterList.indexOf(key) === -1).length\n ) {\n return null\n }\n\n return (\n
\n 已选条件\n
\n {Object.entries(state).map(([key, value]) => {\n if (filterList.indexOf(key) > -1) {\n return null\n }\n if (!value || !value.length) {\n return null\n }\n return value.map(item => (\n ) => {\n e.stopPropagation()\n e.preventDefault()\n const newOption = {\n ...state,\n }\n delete newOption[key]\n\n router.push(\n `/auto/library/${buildUrl(newOption, allConditionKeys)}${key === 'brand' ? '' : window?.location?.search\n }`,\n `/auto/library/${buildUrl(newOption, allConditionKeys)}${key === 'brand' ? '' : window?.location?.search\n }`\n )\n }}\n >\n {item.text}\n \n \n ))\n })}\n
\n
\n {\n sendTeaCommEvent('clk_event', {\n event_id: 'car_select_reset',\n button_name: '重置',\n })\n router.push(\n `/auto/library/x-x-x-x-x-x-x-x-x-x-x`,\n `/auto/library/x-x-x-x-x-x-x-x-x-x-x`\n )\n }}\n >\n 重置\n \n
\n \n
\n )\n}\n","import * as React from 'react'\nimport classnames from 'classnames'\nimport { ContextStore } from './reducer'\nimport { ISortProps } from './interface'\n\ninterface IProps {\n onClick(item: ISortProps, line: number): void\n price: any[]\n type: string\n typeText?: string\n line?: number\n}\n\nexport default function PriceInput({\n onClick,\n price = [\n {\n param: ' , ',\n },\n ],\n type = 'price',\n typeText = '万',\n line = 0\n}: IProps) {\n\n const getValue = React.useCallback((value: string) => {\n if (type === 'price') {\n return parseInt(value, 10)\n }\n return parseFloat(parseFloat(value).toFixed(2)) || 0\n }, [type])\n\n const [low, setLow] = React.useState('')\n const [high, setHigh] = React.useState('')\n const { state, dispatch } = React.useContext(ContextStore)\n React.useEffect(() => {\n setLow(price[0].param.split(',')[0])\n const high =\n parseInt(price[0].param.split(',')[1], 10) > 0\n ? price[0].param.split(',')[1]\n : ''\n setHigh(high)\n }, [price[0].param])\n function handleClick() {\n if (errorMsg) {\n return\n }\n let text = ''\n let mLow = getValue(low || '0') || 0\n let mHigh = getValue(high || '0') || 0\n\n if (!mHigh && type === 'dcar_score') {\n mHigh = 5\n }\n\n if (!mLow && !mHigh) {\n return\n }\n\n if (!mLow) {\n text = `${mHigh}${typeText}以下`\n } else if (!mHigh) {\n text = `${mLow}${typeText}以上`\n } else {\n if (mHigh < mLow) {\n ;[mHigh, mLow] = [mLow, mHigh]\n setHigh(`${mHigh}`)\n setLow(`${mLow}`)\n }\n text = `${mLow}-${mHigh}${typeText}`\n }\n // 确定按钮 如果数据一样的话,就不提交\n const param = `${mLow || 0},${mHigh || -1}`;\n // 是否为已经选择的,需要转为不限\n if (type &&\n state?.[type]?.[0] &&\n param === state?.[type]?.[0]?.['param']) {\n return\n }\n\n onClick(\n {\n key: type,\n param: param,\n text,\n },\n line\n )\n }\n\n const errorMsg = React.useMemo(() => {\n if (type === 'price') {\n return ''\n }\n\n if (Boolean(parseFloat(low)) || Boolean(parseFloat(high))) {\n if (parseFloat(high) > 5 || parseFloat(low) > 5) {\n return '懂车分不能超过5分'\n }\n if (parseFloat(low) < 0 || parseFloat(high) < 0) {\n return '懂车分不能小于0分'\n }\n return ''\n }\n return ''\n }, [low, high])\n\n const isActive = React.useMemo(() => {\n return Boolean(parseFloat(low)) || Boolean(parseFloat(high))\n }, [low, high])\n\n return (\n
\n {\n setLow(e.target.value)\n }}\n />\n -\n {\n setHigh(e.target.value)\n }}\n />\n {typeText || '万'}\n {errorMsg && type === 'dcar_score' && (\n {errorMsg}\n )}\n \n 确定\n \n \n
\n )\n}\n","/* eslint-disable no-unused-expressions */\n/* 左边的品牌列表 */\nimport React, { useRef, useState, useEffect } from 'react'\nimport classnames from 'classnames'\n\ninterface Options {\n param: any\n text: string\n key?: string\n}\n\ninterface IProps {\n type?: string\n value: any\n options: Options[]\n onChange?: (value: any) => void\n}\n\nexport default function SingleList({ options, value, onChange, type }: IProps) {\n const [current, setCurrent] = useState(value)\n\n useEffect(() => {\n setCurrent(value)\n }, [value])\n\n return (\n
\n {options.map((item: Options, index: number) => {\n return (\n {\n event.stopPropagation()\n if (current == item.param) {\n setCurrent('')\n onChange?.({\n param: 'x',\n text: '不限',\n })\n return\n }\n setCurrent(item.param)\n onChange?.(item)\n }}\n key={`single-child-${index}`}\n >\n \n {item.text}\n

\n )\n })}\n \n
\n )\n}\n","/* 左边的品牌列表 */\nimport React, { useRef, useState, useEffect } from 'react'\nimport get from 'lodash/get'\nimport classnames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { Image } from 'Components/view-image'\nimport { ContextStore } from './reducer'\n\nimport { IConditionsProps, IInfoProps, ISortProps } from './interface'\nimport Link from 'next/link'\n\nimport SingleList from './single-list'\n\nconst typeConfig = [\n {\n text: '轿车',\n key: 'series_type',\n param: 0,\n children: [\n {\n param: 'all',\n text: '全部',\n key: 'series_type',\n },\n {\n param: '0',\n text: '微型车',\n key: 'outter_detail_type',\n },\n {\n param: '1',\n text: '小型车',\n key: 'outter_detail_type',\n },\n {\n param: '2',\n text: '紧凑型车',\n key: 'outter_detail_type',\n },\n {\n param: '3',\n text: '中型车',\n key: 'outter_detail_type',\n },\n {\n param: '4',\n text: '中大型车',\n key: 'outter_detail_type',\n },\n {\n param: '5',\n text: '大型车',\n key: 'outter_detail_type',\n },\n ],\n },\n {\n text: 'SUV',\n key: 'series_type',\n param: 1,\n children: [\n {\n param: 'all',\n text: '全部',\n key: 'series_type',\n },\n {\n param: '10',\n text: '小型SUV',\n key: 'outter_detail_type',\n },\n {\n param: '11',\n text: '紧凑型SUV',\n key: 'outter_detail_type',\n },\n {\n param: '12',\n text: '中型SUV',\n key: 'outter_detail_type',\n },\n {\n param: '13',\n text: '中大型SUV',\n key: 'outter_detail_type',\n },\n {\n param: '14',\n text: '大型SUV',\n key: 'outter_detail_type',\n },\n ],\n },\n {\n text: 'MPV',\n key: 'series_type',\n param: 2,\n children: [\n {\n param: 'all',\n text: '全部',\n key: 'series_type',\n },\n {\n param: '20',\n text: '小型MPV',\n key: 'outter_detail_type',\n },\n {\n param: '21',\n text: '紧凑型MPV',\n key: 'outter_detail_type',\n },\n {\n param: '22',\n text: '中型MPV',\n key: 'outter_detail_type',\n },\n {\n param: '23',\n text: '大型MPV',\n key: 'outter_detail_type',\n },\n ],\n },\n {\n text: '跑车',\n key: 'series_type',\n param: 4,\n },\n {\n text: '微面',\n key: 'series_type',\n param: 7,\n },\n {\n text: '轻客',\n key: 'series_type',\n param: 6,\n },\n {\n text: '卡车',\n key: 'series_type',\n param: '13,8,3',\n classParam: '9',\n children: [\n {\n param: '13,8,3',\n text: '全部',\n key: 'series_type',\n },\n {\n param: '13',\n text: '轻卡',\n key: 'series_type',\n },\n {\n param: '8',\n text: '微卡',\n key: 'series_type',\n },\n {\n param: '3',\n text: '皮卡',\n key: 'series_type',\n },\n ],\n },\n]\n\ninterface IProps {\n handleOptionClick: (\n item: ISortProps,\n line: number,\n clearLine?: number\n ) => void\n isOptionActive: (option: ISortProps, line: number) => boolean\n}\n\nconst series_line = 1\nconst outter_line = 12\n\nexport default function SeriesType({\n handleOptionClick,\n isOptionActive,\n}: IProps) {\n const { state, dispatch } = React.useContext(ContextStore)\n const [currentLetter, setCurrentLetter] = useState('')\n const [currentId, setCurrentId] = useState(-1)\n\n function getType() {\n if (state.series_type) {\n return 'series_type'\n }\n\n if (state.outter_detail_type) {\n return 'outter_detail_type'\n }\n\n return ''\n }\n\n // 对应 series_type 还是 outter_detail_type\n function isSeriesTypeActive(item: any) {\n if (!state.series_type && !state.outter_detail_type) {\n return false\n }\n if (state.series_type) {\n return state.series_type.find((option: any) => {\n if (item?.param?.toString()?.indexOf(',') > -1) {\n return (\n item.param\n .toString()\n ?.split(',')\n ?.indexOf(option?.param?.toString()) > -1 ||\n option?.param?.toString() === item.param.toString()\n )\n }\n return option?.param?.toString() === item.param.toString()\n })\n }\n\n if (state.outter_detail_type && item.children) {\n return state.outter_detail_type.find((option: any) =>\n item.children.find(\n (child: any) =>\n option?.param?.toString() === child.param.toString() &&\n child.key === 'outter_detail_type'\n )\n )\n }\n }\n\n function outterDetailValue(item: any) {\n if (!state.series_type && !state.outter_detail_type) {\n return ''\n }\n if (state.series_type && isSeriesTypeActive(item)) {\n if (item?.param?.toString()?.indexOf(',') > -1) {\n return state?.series_type?.[0]?.param\n }\n return 'all'\n }\n\n if (state.outter_detail_type) {\n return state.outter_detail_type[0]['param']\n }\n }\n\n function renderLetters() {\n return (\n
\n {\n handleOptionClick(\n {\n param: 'x',\n text: '不限',\n key: state.series_type ? 'series_type' : 'outter_detail_type',\n },\n state.series_type ? series_line : outter_line\n )\n }}\n >\n 不限\n
\n
    \n {typeConfig.map((series_type: any) => (\n ) => {\n e.preventDefault()\n e.stopPropagation()\n sendTeaCommEvent('click_brand_initial_index', {\n initial: 'letter',\n })\n handleOptionClick(\n {\n param: series_type.param,\n text: series_type.text,\n key: series_type.key,\n },\n series_line,\n outter_line\n )\n }}\n >\n \n {series_type.text}\n {series_type?.children?.length && (\n
    \n {\n if (\n item &&\n (item.param !== 'all' || item.param.indexOf(',') > -1)\n ) {\n handleOptionClick(\n {\n param: item.param,\n text: item.text,\n key: item.key,\n },\n item.key === 'series_type'\n ? series_line\n : outter_line,\n item.key === 'series_type' ? outter_line : series_line\n )\n return\n }\n handleOptionClick(\n {\n param: series_type.param,\n text: series_type.text,\n key: series_type.key,\n },\n item.key === 'series_type' ? series_line : outter_line,\n item.key === 'series_type' ? outter_line : series_line\n )\n }}\n type={getType()}\n value={outterDetailValue(series_type)}\n />\n
    \n )}\n \n ))}\n
\n \n \n )\n }\n\n return (\n
\n

级别

\n
{renderLetters()}
\n
\n )\n}\n","\nimport { IConditionsProps, IInfoProps, ISortProps } from './interface'\n\nexport const sort = [\n { key: 'sort', text: '热度最高', param: 'hot' },\n { key: 'sort', text: '价格由高到低', param: 'price_dec' },\n { key: 'sort', text: '价格由低到高', param: 'price_asc' }\n]\n\n// [\"0 价格\", \"1 级别\", \"2 国别\", \"3 变速箱\", \"4 结构\", \"5 排量\", \"6 能源\", \"7 座位数\", \"8 驱动方式\", \"9 安全配置\", \"10 舒适配置\", \"11 懂车分\", \"12 车系细分\" 13 气缸数 14进气方式]\nexport const conditions: IConditionsProps[] = [\n {\n \"template\": 'single',\n \"title\": \"价格\",\n \"data\": [\n {\n \"param\": \"x\",\n \"text\": \"不限\",\n \"key\": \"price\"\n },\n {\n \"param\": \"0,10\",\n \"text\": \"10万以下\",\n \"key\": \"price\"\n },\n {\n \"param\": \"10,15\",\n \"text\": \"10-15万\",\n \"key\": \"price\"\n },\n {\n \"param\": \"15,20\",\n \"text\": \"15-20万\",\n \"key\": \"price\"\n },\n {\n \"param\": \"20,25\",\n \"text\": \"20-25万\",\n \"key\": \"price\"\n },\n {\n \"param\": \"25,30\",\n \"text\": \"25-30万\",\n \"key\": \"price\"\n },\n {\n \"param\": \"30,40\",\n \"text\": \"30-40万\",\n \"key\": \"price\"\n },\n {\n \"param\": \"50,-1\",\n \"text\": \"50万以上\",\n \"key\": \"price\"\n },\n {\n \"param\": \"\",\n \"text\": \"输入框\",\n \"key\": \"price\"\n },\n ]\n },\n {\n \"template\": 'car',\n \"data\": [\n {\n \"text\": \"不限\",\n \"key\": \"\",\n \"param\": \"x\"\n },\n {\n \"text\": \"轿车\",\n \"key\": \"series_type\",\n \"param\": 0,\n },\n {\n \"text\": \"SUV\",\n \"key\": \"series_type\",\n \"param\": 1,\n },\n {\n \"text\": \"MPV\",\n \"key\": \"series_type\",\n \"param\": 2,\n },\n {\n \"text\": \"跑车\",\n \"key\": \"series_type\",\n \"param\": 4,\n },\n {\n \"text\": \"皮卡\",\n \"key\": \"series_type\",\n \"param\": 3\n },\n {\n \"text\": \"微面\",\n \"key\": \"series_type\",\n \"param\": 7,\n },\n {\n \"text\": \"微卡\",\n \"key\": \"series_type\",\n \"param\": 8,\n },\n {\n \"text\": \"轻客\",\n \"key\": \"series_type\",\n \"param\": 6,\n },\n {\n \"text\": \"卡车\",\n \"key\": \"series_type\",\n \"param\": '13,8,3',\n },\n {\n \"param\": \"13\",\n \"text\": \"轻卡\",\n \"key\": \"series_type\"\n },\n ],\n \"title\": \"级别\"\n },\n {\n \"template\": 'single',\n \"data\": [\n {\n \"text\": \"不限\",\n \"key\": \"\",\n \"param\": \"x\"\n },\n {\n \"text\": \"中国\",\n \"key\": \"country\",\n \"param\": 0\n },\n {\n \"text\": \"德国\",\n \"key\": \"country\",\n \"param\": 3\n },\n {\n \"text\": \"日本\",\n \"key\": \"country\",\n \"param\": 1\n },\n {\n \"text\": \"美国\",\n \"key\": \"country\",\n \"param\": 2\n },\n {\n \"text\": \"韩国\",\n \"key\": \"country\",\n \"param\": 4\n },\n {\n \"text\": \"法国\",\n \"key\": \"country\",\n \"param\": 5\n },\n {\n \"text\": \"其他\",\n \"key\": \"country\",\n \"param\": '9,11,7'\n }\n ],\n \"title\": \"国别\"\n },\n {\n \"template\": 'hover-single',\n \"data\": [\n {\n \"text\": \"手动\",\n \"key\": \"gearbox_type\",\n \"param\": 1\n },\n {\n \"text\": \"自动\",\n \"key\": \"gearbox_type\",\n \"param\": 2\n }\n ],\n \"title\": \"变速箱\"\n },\n {\n \"template\": 'single',\n \"data\": [\n {\n \"text\": \"不限\",\n \"key\": \"\",\n \"param\": \"x\"\n },\n {\n \"text\": \"两厢\",\n \"key\": \"body_detail_type\",\n \"param\": 0\n },\n {\n \"text\": \"三厢\",\n \"key\": \"body_detail_type\",\n \"param\": 1\n },\n {\n \"text\": \"掀背\",\n \"key\": \"body_detail_type\",\n \"param\": 3\n },\n {\n \"text\": \"硬顶敞篷\",\n \"key\": \"body_detail_type\",\n \"param\": 5\n },\n {\n \"text\": \"软顶敞篷\",\n \"key\": \"body_detail_type\",\n \"param\": 6\n },\n {\n \"text\": \"硬顶跑车\",\n \"key\": \"body_detail_type\",\n \"param\": 4\n },\n {\n \"text\": \"旅行版\",\n \"key\": \"body_detail_type\",\n \"param\": 2\n }\n ],\n \"title\": \"结构\"\n },\n {\n \"template\": 'hover-single',\n \"data\": [\n {\n \"text\": \"1.0及以下\",\n \"key\": \"capacity_l\",\n \"param\": \"0~1.0\"\n },\n {\n \"text\": \"1.1-1.6L\",\n \"key\": \"capacity_l\",\n \"param\": \"1.1~1.6\"\n },\n {\n \"text\": \"1.7-2.0L\",\n \"key\": \"capacity_l\",\n \"param\": \"1.7~2.0\"\n },\n {\n \"text\": \"2.1-2.5L\",\n \"key\": \"capacity_l\",\n \"param\": \"2.1~2.5\"\n },\n {\n \"text\": \"2.6-3.0L\",\n \"key\": \"capacity_l\",\n \"param\": \"2.6~3.0\"\n },\n {\n \"text\": \"3.1-4.0L\",\n \"key\": \"capacity_l\",\n \"param\": \"3.1~4.0\"\n },\n {\n \"text\": \"4.0L以上\",\n \"key\": \"capacity_l\",\n \"param\": \"4.0~-1\"\n }\n ],\n \"title\": \"排量\"\n },\n {\n \"template\": 'fuel_form',\n \"data\": [\n {\n \"text\": \"不限\",\n \"key\": \"\",\n \"param\": \"x\"\n },\n {\n \"text\": \"汽油\",\n \"key\": \"fuel_form\",\n \"param\": 1\n },\n {\n \"text\": \"柴油\",\n \"key\": \"fuel_form\",\n \"param\": 2\n },\n {\n \"text\": \"纯电动\",\n \"key\": \"fuel_form\",\n \"param\": 4\n },\n {\n \"text\": \"油电混合\",\n \"key\": \"fuel_form\",\n \"param\": 3\n },\n {\n \"text\": \"增程式\",\n \"key\": \"fuel_form\",\n \"param\": 5\n },\n {\n \"text\": \"插电式混合动力\",\n \"key\": \"fuel_form\",\n \"param\": 6\n },\n {\n \"text\": \"新能源\",\n \"key\": \"fuel_form\",\n \"param\": '4,5,6',\n },\n {\n \"text\": \"汽油+48V轻混系统\",\n \"key\": \"fuel_form\",\n \"param\": 13\n },\n ],\n \"title\": \"能源\"\n },\n {\n \"template\": 'single',\n \"data\": [\n {\n \"text\": \"不限\",\n \"key\": \"\",\n \"param\": \"x\"\n },\n {\n \"text\": \"2座\",\n \"key\": \"seat_count\",\n \"param\": 2\n },\n {\n \"text\": \"4座\",\n \"key\": \"seat_count\",\n \"param\": 4\n },\n {\n \"text\": \"5座\",\n \"key\": \"seat_count\",\n \"param\": 5\n },\n {\n \"text\": \"6座\",\n \"key\": \"seat_count\",\n \"param\": 6\n },\n {\n \"text\": \"7座\",\n \"key\": \"seat_count\",\n \"param\": 7\n },\n {\n \"text\": \"7座以上\",\n \"key\": \"seat_count\",\n \"param\": \"-1\"\n }\n ],\n \"title\": \"座位数\"\n },\n {\n \"template\": 'hover-single',\n \"data\": [\n {\n \"text\": \"前驱\",\n \"key\": \"driven_form\",\n \"param\": 1\n },\n {\n \"text\": \"后驱\",\n \"key\": \"driven_form\",\n \"param\": 2\n },\n {\n \"text\": \"四驱\",\n \"key\": \"driven_form\",\n \"param\": 3\n }\n ],\n \"title\": \"驱动方式\"\n },\n {\n \"template\": 'hover-select',\n \"data\": [\n {\n \"text\": \"不限\",\n \"key\": \"\",\n \"param\": \"x\"\n },\n {\n \"text\": \"氙气大灯\",\n \"key\": \"xenon_lamp\",\n \"param\": 1\n },\n {\n \"text\": \"车身稳定系统\",\n \"key\": \"body_stability_system\",\n \"param\": 1\n },\n {\n \"text\": \"倒车雷达\",\n \"key\": \"parking_radar\",\n \"param\": 1\n },\n {\n \"text\": \"自动泊车\",\n \"key\": \"auto_park_entry\",\n \"param\": 1\n },\n {\n \"text\": \"儿童座椅接口\",\n \"key\": \"child_seat_interface\",\n \"param\": 1\n },\n {\n \"text\": \"倒车影像\",\n \"key\": \"reversing_camera\",\n \"param\": 1\n },\n {\n \"text\": \"日间行车灯\",\n \"key\": \"daytime_light\",\n \"param\": 1\n }\n ],\n \"title\": \"安全配置\"\n },\n {\n \"template\": 'hover-select',\n \"data\": [\n {\n \"text\": \"不限\",\n \"key\": \"\",\n \"param\": \"x\"\n },\n {\n \"text\": \"全景天窗\",\n \"key\": \"panoramic_skylight\",\n \"param\": 1\n },\n {\n \"text\": \"定速巡航\",\n \"key\": \"cruise\",\n \"param\": 1\n },\n {\n \"text\": \"多功能方向盘\",\n \"key\": \"multifunction_steer_wheel\",\n \"param\": 1\n },\n {\n \"text\": \"无钥匙启动\",\n \"key\": \"keyless_start\",\n \"param\": 1\n },\n {\n \"text\": \"座椅加热\",\n \"key\": \"front_and_rear_seat_heating\",\n \"param\": 1\n },\n {\n \"text\": \"电动座椅\",\n \"key\": \"electric_seat_memory\",\n \"param\": 1\n },\n {\n \"text\": \"自适应巡航\",\n \"key\": \"adaptive_cruise\",\n \"param\": 1\n },\n {\n \"text\": \"GPS导航\",\n \"key\": \"gps\",\n \"param\": 1\n }\n ],\n \"title\": \"舒适配置\"\n },\n {\n \"template\": 'single',\n \"title\": \"懂车分\",\n \"data\": [\n {\n \"param\": \"x\",\n \"text\": \"不限\",\n \"key\": \"dcar_score\"\n },\n {\n \"param\": \"0,3\",\n \"text\": \"3.0分以下\",\n \"key\": \"dcar_score\"\n },\n {\n \"param\": \"3,3.5\",\n \"text\": \"3.0-3.5分\",\n \"key\": \"dcar_score\"\n },\n {\n \"param\": \"3.5,4\",\n \"text\": \"3.5-4.0分\",\n \"key\": \"dcar_score\"\n },\n {\n \"param\": \"4,4.5\",\n \"text\": \"4.0-4.5分\",\n \"key\": \"dcar_score\"\n },\n {\n \"param\": \"4.5,5\",\n \"text\": \"4.5-5分\",\n \"key\": \"dcar_score\"\n },\n {\n \"param\": \"\",\n \"text\": \"输入框\",\n \"key\": \"dcar_score\"\n },\n ]\n },\n {\n \"template\": 'none',\n \"title\": \"车系细分\",\n \"data\": [\n {\n \"param\": \"0\",\n \"text\": \"微型车\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"1\",\n \"text\": \"小型车\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"2\",\n \"text\": \"紧凑型车\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"3\",\n \"text\": \"中型车\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"4\",\n \"text\": \"中大型车\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"5\",\n \"text\": \"大型车\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"10\",\n \"text\": \"小型SUV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"11\",\n \"text\": \"紧凑型SUV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"12\",\n \"text\": \"中型SUV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"13\",\n \"text\": \"中大型SUV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"14\",\n \"text\": \"大型SUV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"20\",\n \"text\": \"小型MPV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"21\",\n \"text\": \"紧凑型MPV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"22\",\n \"text\": \"中型MPV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"23\",\n \"text\": \"大型MPV\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"30\",\n \"text\": \"迷你皮卡\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"31\",\n \"text\": \"中型皮卡\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"32\",\n \"text\": \"全尺寸皮卡\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"33\",\n \"text\": \"重型皮卡\",\n \"key\": \"outter_detail_type\"\n },\n {\n \"param\": \"34\",\n \"text\": \"超重型皮卡\",\n \"key\": \"outter_detail_type\"\n },\n ]\n },\n {\n \"template\": 'hover-single',\n \"title\": \"气缸数\",\n \"data\": [\n {\n \"param\": \"3\",\n \"text\": \"3缸\",\n \"key\": \"cylinder_nums\"\n },\n {\n \"param\": \"4\",\n \"text\": \"4缸\",\n \"key\": \"cylinder_nums\"\n },\n {\n \"param\": \"5\",\n \"text\": \"5缸\",\n \"key\": \"cylinder_nums\"\n },\n {\n \"param\": \"6\",\n \"text\": \"6缸\",\n \"key\": \"cylinder_nums\"\n },\n {\n \"param\": \"8\",\n \"text\": \"8缸\",\n \"key\": \"cylinder_nums\"\n },\n {\n \"param\": \"-1\",\n \"text\": \"8缸以上\",\n \"key\": \"cylinder_nums\"\n },\n ]\n },\n {\n \"template\": 'hover-single',\n \"title\": \"进气方式\",\n \"data\": [\n {\n \"param\": \"1\",\n \"text\": \"自然吸气\",\n \"key\": \"gas_form\"\n },\n {\n \"param\": \"3,4,5,6,7\",\n \"text\": \"涡轮增压\",\n \"key\": \"gas_form\"\n },\n {\n \"param\": \"2\",\n \"text\": \"机械增压\",\n \"key\": \"gas_form\"\n },\n ]\n },\n];\n\nexport default conditions","/* eslint-disable no-unused-expressions */\n/* 左边的品牌列表 */\nimport React, { useRef, useState, useEffect, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\ninterface Options {\n param: any\n text: string\n key: string\n}\n\ninterface IProps {\n value?: string[]\n options: Options[]\n name?: string\n onChange?: (value: string[]) => void\n}\n\nconst DEFAULT_VALUE: string[] = []\n\nexport default function MultipleList({\n options,\n name,\n value = DEFAULT_VALUE,\n onChange,\n}: IProps) {\n const [current, setCurrent] = useState(value)\n\n useEffect(() => {\n setCurrent(value)\n }, [value])\n\n function isAll() {\n const { length } = options\n for (let i = 0; i < length; i++) {\n const item = options[i]\n // 空字符串为 不限\n if (item.key && !isActive(item.key)) {\n return false\n }\n }\n return true\n }\n\n function isActive(key: string) {\n if (current?.indexOf(key) > -1) {\n return true\n }\n return false\n }\n\n const setCurrentProxy = useCallback(\n (key: string) => {\n let tmp = [...current]\n if (key) {\n if (tmp?.length) {\n const index = tmp.indexOf(key)\n if (index > -1) {\n // 删除\n tmp.splice(index, 1)\n } else {\n tmp.push(key)\n }\n } else {\n tmp.push(key)\n }\n } else {\n // 空 为点击了不限 全选或者晴空所有\n if (isAll()) {\n tmp = []\n } else {\n tmp = options.map((item: Options) => item.key)\n }\n }\n onChange?.(tmp)\n setCurrent(tmp)\n },\n [current, setCurrent, onChange]\n )\n\n return (\n
\n {options.map((item: Options, index: number) => {\n return (\n {\n event.stopPropagation()\n setCurrentProxy(item.key)\n if (!(item.key ? isActive(item.key) : isAll())) {\n sendTeaCommEvent('clk_event', {\n event_id: 'car_select_other_category',\n car_category_name: name,\n car_category_value: item.text,\n })\n }\n }}\n key={`multiple-child-${index}`}\n >\n \n {item.text}\n

\n )\n })}\n \n
\n )\n}\n","/* 左边的品牌列表 */\nimport React, { useRef, useState, useEffect } from 'react'\n\nimport classnames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport buildUrl from 'Pages/auto/home/utils'\nimport { ContextStore } from './reducer'\nimport { useRouter } from 'next/router'\nimport { IConditionsProps, IInfoProps, ISortProps } from './interface'\nimport Link from 'next/link'\n\nimport { sort, conditions } from './conditions-config'\n\nimport SingleList from './single-list'\nimport MultipleList from './multiple-list'\n\ninterface IProps {\n handleOptionClick: (item: ISortProps, line: number, clearLine?: number) => void\n isOptionActive: (option: ISortProps, line: number) => boolean\n}\n\n// [\"3 变速箱\", \"5 排量\", 13 气缸数 \"8 驱动方式\", 14进气方式 \"9 安全配置\", \"10 舒适配置\",]\nconst typeArr = [3, 5, 13, 8, 14, 9, 10];\n\nexport default function Other({ handleOptionClick, isOptionActive }: IProps) {\n const router = useRouter()\n const { state, dispatch } = React.useContext(ContextStore)\n\n\n function isActive(item: IConditionsProps) {\n if (item.template === 'hover-single') {\n return typeSingleValue(item)\n }\n if (item.template === 'hover-select') {\n return !!typeSelectValue(item).length\n }\n }\n\n function typeSingleValue(item: IConditionsProps) {\n if (item.template === 'hover-single') {\n const key = item?.data?.[0]?.['key'];\n if (state[key]?.[0]?.['param']) {\n return state[key]?.[0]?.['param']\n }\n return ''\n }\n }\n\n function typeSelectValue(item: IConditionsProps): string[] {\n // 多选\n if (item.template === 'hover-select') {\n let result = [];\n const length = item?.data?.length;\n for (let i = 0; i < length; i++) {\n const typeData = item?.data?.[i];\n const key = typeData?.['key'];\n if (state[key]?.[0]?.['param']) {\n result.push(key)\n }\n }\n if (result.length) {\n return result;\n }\n }\n return []\n }\n\n const allConditionKeys = React.useMemo(() => {\n return conditions.map(item => {\n return Array.from(\n new Set(item.data.map(item => item.key).filter(item => !!item))\n )\n })\n }, [conditions])\n // select change\n function handleSelectClick(value: string[], line: number, clearLine?: number) {\n // 第N行条件\n const currentLine = allConditionKeys[line]\n // dispatch({ type: 'conditions' })\n const newOptions = Object.assign({}, state)\n\n if (clearLine !== undefined) {\n // 可以指定清空特定行\n const clearLineItem = allConditionKeys[clearLine]\n clearLineItem.forEach(key => {\n newOptions[key] = []\n })\n }\n\n // 清空整行元素\n if (!value?.length) {\n currentLine.forEach(key => {\n newOptions[key] = []\n })\n router.push(\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`,\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`\n )\n return\n }\n\n value?.forEach(key => {\n // 初始值为空\n if (!newOptions[key]) {\n newOptions[key] = []\n }\n\n newOptions[key] = [\n {\n text: '',\n param: 1,\n },\n ]\n });\n\n router.push(\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`,\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`\n )\n }\n\n function renderList() {\n return (\n
\n
    \n {typeArr.map((index: number) => (\n ) => {\n e.preventDefault()\n e.stopPropagation()\n sendTeaCommEvent('click_brand_initial_index', {\n initial: 'letter',\n })\n }}\n >\n {conditions[index]['title']}\n {\n conditions[index]['template'] === 'hover-single' && (\n
    \n {\n if (item && item.param !== 'all') {\n handleOptionClick({\n \"param\": item.param,\n \"text\": item.text,\n \"key\": item.key\n }, index)\n return\n }\n }}\n value={typeSingleValue(conditions[index])} />\n
    \n )\n }\n {\n conditions[index]['template'] === 'hover-select' && (\n
    \n {\n // 处理多种类型情况\n handleSelectClick(item, index)\n }}\n value={typeSelectValue(conditions[index])} />\n
    \n )\n }\n \n ))}\n
\n \n
\n )\n }\n\n return (\n
\n

其他

\n
\n {renderList()}\n
\n
\n )\n}\n","/* 左边的品牌列表 */\nimport React, { useRef, useState, useEffect } from 'react'\nimport get from 'lodash/get'\nimport classnames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { Image } from 'Components/view-image'\nimport { ContextStore } from './reducer'\n\nimport { IConditionsProps, IInfoProps, ISortProps, ITypeConfig } from './interface'\nimport Link from 'next/link'\n\nimport SingleList from './single-list'\n\nconst typeConfig: ITypeConfig[] = [\n {\n \"text\": \"汽油\",\n \"key\": \"fuel_form\",\n \"param\": 1\n },\n {\n \"text\": \"柴油\",\n \"key\": \"fuel_form\",\n \"param\": 2\n },\n {\n \"text\": \"油电混合\",\n \"key\": \"fuel_form\",\n \"param\": 3\n },\n {\n \"text\": \"新能源\",\n \"key\": \"fuel_form\",\n \"param\": '4,5,6',\n 'children': [\n {\n \"param\": \"4,5,6\",\n \"text\": \"全部\",\n \"key\": \"fuel_form\"\n },\n {\n \"text\": \"纯电动\",\n \"key\": \"fuel_form\",\n \"param\": 4\n },\n {\n \"text\": \"增程式\",\n \"key\": \"fuel_form\",\n \"param\": 5\n },\n {\n \"text\": \"插电式混合动力\",\n \"key\": \"fuel_form\",\n \"param\": 6\n }\n ]\n },\n {\n \"text\": \"汽油+48V轻混系统\",\n \"key\": \"fuel_form\",\n \"param\": 13\n },\n]\n\ninterface IProps {\n handleOptionClick: (item: ISortProps, line: number, clearLine?: number) => void\n isOptionActive: (option: ISortProps, line: number) => boolean\n}\n\nconst fuel_line = 6;\n\nexport default function FuelForm({ handleOptionClick, isOptionActive }: IProps) {\n const { state, dispatch } = React.useContext(ContextStore)\n\n function isFuelFormActive(item: ISortProps) {\n if (!state.fuel_form) {\n return false;\n }\n const param: string = state.fuel_form?.[0]?.['param'] + ''\n const itemParam: string = item.param + ''\n if (itemParam?.indexOf(',') > -1) {\n if (itemParam?.indexOf(param) > -1) {\n return true\n }\n } else {\n if (itemParam === param) {\n return true\n }\n }\n return false\n }\n\n function outterDetailValue(item: ISortProps) {\n if (!state.fuel_form) {\n return '';\n }\n if (state.fuel_form) {\n return state.fuel_form[0]['param']\n }\n }\n\n function renderLetters() {\n return (\n
\n {\n handleOptionClick({\n \"param\": \"x\",\n \"text\": \"不限\",\n \"key\": 'fuel_form'\n }, fuel_line)\n }}\n >不限
\n
    \n {typeConfig.map((fuel_form: any) => (\n ) => {\n e.preventDefault()\n e.stopPropagation()\n sendTeaCommEvent('click_brand_initial_index', {\n initial: 'letter',\n })\n handleOptionClick({\n \"param\": fuel_form.param,\n \"text\": fuel_form.text,\n \"key\": fuel_form.key\n }, fuel_line)\n }}\n >\n {fuel_form.text}\n {\n fuel_form?.children?.length && (\n
    \n {\n handleOptionClick({\n \"param\": item.param,\n \"text\": item.text,\n \"key\": item.key\n }, fuel_line)\n return\n }}\n value={outterDetailValue(fuel_form)} />\n
    \n )\n }\n \n ))}\n
\n \n \n )\n }\n\n return (\n
\n

能源

\n
\n {renderLetters()}\n
\n
\n )\n}\n","import React, { useState } from 'react'\nimport classnames from 'classnames'\nimport { useRouter } from 'next/router'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport buildUrl from 'Pages/auto/home/utils'\nimport PriceInput from './price-input'\nimport { ContextStore } from './reducer'\nimport { IConditionsProps, ISortProps } from './interface'\nimport SeriesType from './series-type'\nimport Other from './other'\nimport FuelForm from './fuel-form'\n\ninterface IProps {\n conditions: IConditionsProps[]\n /* 展示更多条件下面的线 */\n hideline?: boolean\n foldprops: boolean\n}\n\nexport default function Conditions({\n conditions,\n hideline,\n foldprops,\n}: IProps) {\n const router = useRouter()\n // 是否展开条件\n const [fold, setFold] = useState(foldprops)\n /* 判断是否是条件的请求 */\n // const { dispatch } = React.useContext(ContextStore)\n const { state, dispatch } = React.useContext(ContextStore)\n\n const renderControlFold = () => {\n return (\n
\n {\n setFold(!fold)\n sendTeaCommEvent('clk_event', {\n event_id: 'car_select_more',\n shrink_type: !fold ? 'unfold' : 'fold',\n })\n }}\n >\n {fold ? '收起 ' : '更多条件(结构/排量/配置)'}\n \n \n \n
\n )\n }\n const getStat = (options: any) => {\n return Object.keys(options).reduce((acc: any, curr: string) => {\n acc[curr] = options[curr].map((item: any) => item.param).join(',')\n return acc\n }, {})\n }\n\n const allConditionKeys = React.useMemo(() => {\n return conditions.map(item => {\n return Array.from(\n new Set(item.data.map(item => item.key).filter(item => !!item))\n )\n })\n }, [conditions])\n\n // 单选相关的埋点\n const sendTea = (item: ISortProps) => {\n const params: {\n [key: string]: string\n } = {}\n\n switch (item.key) {\n case 'price':\n params.event_id = 'car_select_price'\n params.price_range = item.text\n break\n case 'series_type':\n case 'outter_detail_type':\n params.event_id = 'car_select_style_category'\n params.car_style_category_name = item.text\n break\n case 'dcar_score':\n params.event_id = 'car_select_dscore'\n params.dscore_range = item.text\n break\n case 'fuel_form':\n params.event_id = 'car_select_energy_category'\n params.car_energy_category_name = item.text === '全部' ? '新能源' : item.text\n break\n case 'country':\n params.event_id = 'car_select_national_category'\n params.car_national_category_name = item.text\n break\n case 'body_detail_type':\n params.event_id = 'car_select_struct_category'\n params.car_struct_category = item.text\n break\n case 'seat_count':\n params.event_id = 'car_select_seats'\n params.seat_count_range = item.text\n break\n case 'gearbox_type':\n params.event_id = 'car_select_other_category'\n params.car_category_name = '变速箱'\n params.car_category_value = item.text\n break\n case 'capacity_l':\n params.event_id = 'car_select_other_category'\n params.car_category_name = '排量'\n params.car_category_value = item.text\n break\n case 'cylinder_nums':\n params.event_id = 'car_select_other_category'\n params.car_category_name = '气缸数'\n params.car_category_value = item.text\n break\n case 'driven_form':\n params.event_id = 'car_select_other_category'\n params.car_category_name = '驱动方式'\n params.car_category_value = item.text\n break\n case 'gas_form':\n params.event_id = 'car_select_other_category'\n params.car_category_name = '进气方式'\n params.car_category_value = item.text\n break\n }\n sendTeaCommEvent('clk_event', params)\n }\n\n const handleOptionClick = (item: ISortProps, line: number, clearLine?: number) => {\n const copyItem = Object.assign({}, item)\n // 是否为已经选择的,需要转为不限\n if (copyItem?.key &&\n state?.[copyItem?.key]?.[0] &&\n copyItem?.param === state?.[copyItem?.key]?.[0]?.['param']) {\n copyItem.text = '不限'\n copyItem.param = 'x'\n }\n sendTea(copyItem)\n // 第N行条件\n const currentLine = allConditionKeys[line]\n // dispatch({ type: 'conditions' })\n const newOptions = Object.assign({}, state)\n\n if (clearLine !== undefined) {\n // 可以指定清空特定行\n const clearLineItem = allConditionKeys[clearLine]\n clearLineItem.forEach(key => {\n newOptions[key] = []\n })\n }\n\n // 选择不限时,清空整行元素\n if (copyItem.text.indexOf('不限') >= 0) {\n currentLine.forEach(key => {\n newOptions[key] = []\n })\n router.push(\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`,\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`\n )\n\n return\n }\n // 初始值为空\n if (!newOptions[copyItem.key]) {\n newOptions[copyItem.key] = []\n }\n\n newOptions[copyItem.key] = [\n {\n text: copyItem.text,\n param: copyItem.param,\n },\n ]\n router.push(\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`,\n `/auto/library/${buildUrl(newOptions, allConditionKeys)}${window?.location?.search\n }`\n )\n }\n\n function isOptionActive(option: ISortProps, line: number): boolean {\n if (!option) {\n return false\n }\n // 不限的高亮条件:同一行中没有被选中的元素\n if (option.text === '不限') {\n return !allConditionKeys[line].some(\n item => !!state[item] && state[item].length > 0\n )\n }\n if (!state[option.key] || !state[option.key].length) {\n return false\n }\n // ===部分条件筛选有问题\n if (state[option.key].some(item => item.param == option.param)) {\n return true\n }\n return false\n }\n\n const topArr = [\n 0, // 价格\n 1, // 级别\n 11, // 懂车分\n 6, // 能源\n ]; // index 为 condition的排序\n\n const secArr = [\n 2, // 国别\n 4, // 结构\n 7, // 座位数\n ]; // index 为 condition的排序\n\n function renderList(sortArr: any[]) {\n return (\n <>\n {\n sortArr.map((line: number) => {\n const data: IConditionsProps = conditions[line];\n if (data.template === 'single') {\n return (\n
\n {data.title}\n
\n {data.data.map((item: ISortProps) => {\n if (item.text === '输入框') {\n return (\n
\n \n
\n )\n }\n return (\n {\n event.stopPropagation()\n handleOptionClick(item, line)\n }}\n >\n {item.text}\n \n )\n })}\n
\n
\n )\n }\n\n if (data.template === 'car') {\n return (\n \n )\n }\n\n if (data.template === 'fuel_form') {\n return (\n \n )\n }\n })\n }\n \n \n )\n }\n\n return (\n \n {renderList(topArr)}\n \n {renderList(secArr)}\n \n \n {renderControlFold()}\n \n \n )\n}\n","/* 右边全部 */\n\nimport React from 'react'\nimport NoSSR from 'react-no-ssr'\n\nimport Loading from 'Components/loading'\n\nimport CarList from './car-list'\nimport CarListSpider from './car-list-spider'\nimport Selected from './selected'\nimport Conditions from './conditions'\n\nimport { ISortProps, IConditionsProps } from './interface'\n\ninterface IProps {\n conditions: IConditionsProps[]\n sort: ISortProps[]\n foldProps: boolean\n spiderList?: any\n}\n\nexport default function ConditionsList(props: IProps) {\n const { conditions, sort, foldProps, spiderList } = props\n return (\n
\n \n \n {!spiderList ? (\n }>\n \n \n ) : (\n \n )}\n
\n )\n}\n","import css from 'styled-jsx/css'\n\nconst autoLibraryStyle = css.global`\n .auto-library-wrap .item-wrap{\n min-height: 56px;\n border-bottom: 0.5px solid #e6e8f2;\n display: flex;\n }\n\n .auto-library-wrap .item-wrap .name{\n height: 56px;\n line-height: 56px;\n font-size: 14px;\n color: #979aa8;\n width: 80px;\n text-align: center;\n }\n .auto-library-wrap .item-wrap .item-list{\n flex: 1;\n padding-bottom: 8px;\n }\n .auto-library-wrap .item-wrap .item-child{\n display: inline-block;\n margin: 15px 2px 0 0;\n padding: 4px 8px;\n cursor: pointer;\n -webkit-transition: all 0.1s ease-in-out;\n transition: all 0.1s ease-in-out;\n border-radius: 2px;\n }\n .auto-library-wrap .item-wrap .item-child.big-mr{\n margin-right: 35px\n }\n .auto-library-wrap .item-wrap .active{\n background-color: #ffcc32;\n }\n .auto-library-wrap .item-wrap .item-child:hover {\n background: rgba(255, 225, 0, 0.2);\n }\n\n`\nexport default autoLibraryStyle\n","import * as Koa from 'koa'\n\nexport function getClientIP(ctx: Koa.Context) {\n let ip = ctx.headers['ali-cdn-real-ip'] || ctx.headers['x-real-ip']\n if (ip) {\n return ip\n }\n\n ip = ctx.headers['x-forwarded-for']\n if (ip) {\n if (ip.indexOf(',') === -1) {\n return ip\n }\n const ips = ip.split(/,\\s*/)\n const rIsLocal = /^(10|192\\.168)\\./\n if (ips.length > 1 && rIsLocal.test(ips[0]) && !rIsLocal.test(ips[1])) {\n return ips[1]\n }\n return ips[0]\n }\n\n if (isObject(ctx) && isObject(ctx.req)) {\n // koa\n ip = ctx.req && ctx.req.socket.remoteAddress\n } else {\n // express\n ip = ctx.socket.remoteAddress\n }\n\n if (!ip) {\n return '255.255.255.255'\n }\n if (ip === '::1') {\n return '127.0.0.1'\n }\n\n return ip.replace(/^:.*:/, '')\n}\n\nexport function isObject(value: any) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\nconst SPIDER_UA = [\n 'Baiduspider-render',\n 'Baiduspider-image',\n 'Baiduspider',\n 'Googlebot-Image',\n 'Googlebot',\n '360Spider',\n 'Sogou Pic Spider',\n 'Sogou News Spider',\n 'Sogou Video Spider',\n 'Sogou web spider',\n 'SogouSpider',\n 'YisouSpider',\n 'bingbot',\n 'msnbot',\n 'msnbot-media',\n 'Yahoo! Slurp China',\n 'Yahoo!',\n 'Bytespider',\n]\n\nexport const getSpider = (ua: string) => {\n return SPIDER_UA.find((spiderKey) => {\n if (-1 !== (ua || '').indexOf(spiderKey)) {\n return true\n }\n return false\n })\n}\n","/* eslint-disable no-unused-expressions */\nimport React, { useEffect, useState } from 'react'\nimport Head from 'next/head'\nimport { SingletonRouter, withRouter } from 'next/router'\nimport getUrl from 'lib/url'\nimport { conformsTo, get } from 'lodash'\nimport { ContextProvider } from './reducer'\nimport { IConditionsProps, IInfoProps, ISortProps } from './interface'\nimport fetch from 'lib/decorated-fetch'\nimport BrandList from './brand-list'\nimport ConditionsList from './conditions-list'\nimport autoLibraryStyle from './less'\nimport { sort, conditions } from './conditions-config'\nimport { getCars, getParamsFromState } from './helper'\nimport { getSpider } from '../../server/common/utils'\n\ninterface IAutoProps {\n brands: IInfoProps[][]\n // 品牌字母\n letters: string[]\n // url中的query,用来初始化搜索结果\n query: any\n router: SingletonRouter\n options: any\n initProps: any\n asPath?: string\n spiderList?: any\n}\n\nfunction AutoLibrary(props: IAutoProps) {\n const { query, options, letters, brands, initProps, spiderList } = props\n const [init, setInit] = useState(() => {\n return {\n ...initProps,\n ...options,\n }\n })\n\n const searchParams = query?.searchParams || query?.id\n\n // 顺序 [\"0 价格\", \"1 级别\", \"2 国别\", \"3 变速箱\", \"4 结构\", \"5 排量\", \"6 能源\", \"7 座位数\", \"8 驱动方式\", \"9 安全配置\", \"10 舒适配置\", \"11 懂车分\", \"12 车系细分\" 13 气缸数 14进气方式]\n // 默认展开的是 [0, 1,12,11,6,2] 其他只要存在需要展开\n const defaultShow = [0, 1, 12, 11, 6, 2]\n const foldParam = searchParams\n ?.split('-')\n ?.find((item: any, index: number) => {\n if (defaultShow.indexOf(index) < 0 && item !== 'x') {\n return true\n }\n return false\n })\n\n useEffect(() => {\n setInit({\n ...initProps,\n ...options,\n })\n }, [options, initProps])\n\n const fullYear = new Date().getFullYear()\n let title = ''\n let description = ''\n let keywords = ''\n\n try {\n // 选择品牌后\n if (initProps?.['brand']?.[0]?.['text']) {\n const brand = initProps?.['brand']?.[0]?.['text']\n title = `【${brand}品牌汽车】${brand}品牌汽车报价_${brand}品牌汽车报价_图片_懂车帝`\n // 目前数量拿不到,后面再加\n description = `懂车帝报价,${brand}品牌汽车报价频道,提供${fullYear}${brand}品牌汽车最新报价及图片信息,包含${brand}品牌汽车共1个在售车系,全部在售车型最新报价,图片,视频,4s店信息,最新${brand}品牌汽车信息尽在懂车帝官网。`\n keywords = `${brand}品牌汽车,${brand}品牌汽车报价,${brand}品牌汽车图片`\n }\n\n // 选择价格拼接\n if (options?.['price']?.[0] && options?.['price']?.[0]?.['text']) {\n const price = options?.['price']?.[0]?.['text']\n title += `${price}小型车报价_${price}小型车买什么车好_懂车帝`\n description += '汽车报价,汽车价格,汽车最新报价,懂车帝汽车报价'\n keywords +=\n '【汽车报价】懂车帝官网为您提供最新汽车报价信息,包括国产车、进口车各大品牌最新汽车价格,提供汽车经销商、图片、视频等参考信息。关注最新汽车报价,就上懂车帝官网。'\n }\n } catch (error) {\n console.error(error)\n }\n\n if (!title) {\n title = `车型大全_${fullYear}最新汽车图片及报价_热门车排行榜_懂车帝`\n }\n if (!description) {\n description =\n '懂车帝车型大全为您提供所有汽车品牌、厂商在产/停产全系车型,高清实拍、经销商报价,全网最低!帮您解决哪个车更值得购买的问题,自定义条件筛选,帮助您快速购车!'\n }\n if (!keywords) {\n keywords = `车型大全,${fullYear}最新汽车图片及报价,热门车排行榜`\n }\n\n return (\n
\n \n {title}\n \n \n \n \n
\n

条件选车

\n
\n \n \n \n \n
\n \n \n
\n
\n )\n}\n\n// 重新处理数据\nfunction reHandleData(data: any, query: any) {\n // 处理品牌\n let list: IInfoProps[] = []\n const brands: IInfoProps[][] = []\n const letters: string[] = []\n data?.brand &&\n data.brand?.forEach((item: IInfoProps) => {\n if (item.type === 1000) {\n letters.push(item.info.pinyin)\n brands.push(list)\n list = []\n }\n if (item.type === 1000 || item.type === 1001) {\n list.push(item)\n }\n })\n brands.push(list)\n brands.shift()\n\n // 热门当作 hot\n data?.hot_brand?.forEach((item: any) => {\n item.type = 1001 // 统一code\n if (item.info && item.info.pinyin) {\n item.info.pinyin = 'hot'\n }\n })\n data?.hot_brand && brands.push(data?.hot_brand)\n\n const options: any = {}\n\n const searchParams = query?.searchParams || query?.id\n if (searchParams) {\n const paramsList = searchParams?.split('-')\n\n conditions?.forEach((item: any, index: number) => {\n const param =\n paramsList?.[index] === 'x' ? 'x' : paramsList?.[index] || 'x'\n if (index !== 10 && index !== 9) {\n // 金额特殊处理\n if (index === 0) {\n const newItem: ISortProps | undefined = item.data.find(\n (option: any) =>\n option?.param?.toString() === param.toString().replace('!', '-')\n )\n if (newItem?.text === '不限') {\n return\n }\n try {\n const [low, high] = param?.split(',') || []\n if (high) {\n if (high === '!1') {\n options.price = [\n newItem || {\n param: param.toString().replace('!', '-'),\n text: `${low}万以上`,\n key: 'price',\n },\n ]\n } else {\n options.price = [\n newItem || {\n param: param.toString().replace('!', '-'),\n text: `${param?.split(',').join('-')}万`,\n key: 'price',\n },\n ]\n }\n }\n } catch (e) {\n console.error(e)\n }\n } else if (index === 11) {\n // 懂车分 特殊处理\n const newItem: ISortProps | undefined = item.data.find(\n (option: any) =>\n option?.param?.toString() === param?.toString()?.replace('!', '-')\n )\n if (newItem?.text === '不限') {\n return\n }\n try {\n options.dcar_score = [\n newItem || {\n param: param?.toString(),\n text: `${param?.split(',')?.join('-')}分`,\n key: 'dcar_score',\n },\n ]\n } catch (e) {\n console.error(e)\n }\n } else {\n const newItem: ISortProps | undefined = item.data.find(\n (option: any) =>\n option?.param?.toString() === param?.toString().replace('!', '-')\n )\n if (newItem?.key !== undefined && newItem?.key !== '') {\n options[newItem.key] = [newItem]\n }\n }\n } else {\n const list = paramsList?.[index]?.split('_')?.map((item: string) => {\n return parseInt(item, 10) || 0\n })\n list?.forEach((index: number) => {\n const newItem = item.data[index]\n if (newItem?.key !== '') {\n options[newItem.key] = [newItem]\n }\n })\n }\n })\n }\n\n return {\n options,\n conditions,\n sort,\n letters,\n brands,\n }\n}\n\nfunction handlePath(asPath: string) {\n const search = typeof asPath !== 'undefined' && asPath && asPath.split('?')[1]\n const queries = {} as any\n let initProps = {} as any\n if (search) {\n search?.split('&')?.forEach(function (c: string) {\n if (c === '') {\n return\n }\n const splitArr = c.split('=')\n const key = splitArr[0]\n queries[key] = splitArr.slice(1)\n })\n const keys = queries['key'] as string[]\n const param = queries['param'] as string[]\n const text = queries['text'] as string[]\n const more = queries['more'] as string[]\n if (keys && param && text) {\n initProps = keys.reduce((acc: any, curr, index) => {\n if (!curr) {\n return acc\n }\n if (!acc[curr]) {\n acc[curr] = []\n }\n acc[curr].push({\n param: Number(param?.[index]) || param?.[index],\n text: decodeURIComponent(text?.[index]),\n more: Number(more?.[index]) || more?.[index],\n })\n return acc\n }, {})\n }\n }\n return initProps\n}\n\nAutoLibrary.getInitialProps = async ({ query, asPath, req }: any) => {\n const json =\n (await fetch(getUrl('/motor/pc/car/brand/all_brand', 'motor.pc_car.api'), {\n req,\n }).catch((err) => {\n // no-op\n })) || {}\n\n const data = reHandleData(json.data, query) || {}\n const initProps = handlePath(asPath)\n\n /**\n * 如果是服务端请求,并且是蜘蛛,走服务端渲染\n */\n const ua = req?.headers?.['user-agent']\n let spiderList = null\n if (ua && getSpider(ua)) {\n const queryStr = getParamsFromState({\n ...initProps,\n ...data?.options,\n })\n spiderList = await getCars(queryStr)\n }\n\n const result = {\n _pageType: 'new',\n ...data,\n query,\n initProps,\n asPath,\n spiderList,\n }\n return result\n}\n\nexport default withRouter(AutoLibrary)\n","import AutoHome from 'New/auto/library'\n\nexport default AutoHome\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","module.exports = require(\"core-js/library/fn/array/from\");","import getQuery from '@arsenal/arsenal/modules/getQuery'\n\n/**\n * sessionStorage工具\n */\nconst _sessionStorage = (() => {\n return {\n getItem: (key: string): string | null => {\n try {\n return sessionStorage.getItem(key)\n } catch (e) {\n return null\n }\n },\n setItem: (key: string, value: string): void => {\n try {\n sessionStorage.setItem(key, value)\n } catch (e) {}\n },\n }\n})()\n\n/**\n * 获取zt参数,用于统计pc站来源及线索提交场景使用\n * 获取方式:链接中zt参数 > session storage中zt参数 > 自然流量 default_pc\n * FIXME: 上线后观察是否存在无限制向后追加zt问题,并解决\n * @param {string} appendLabel - 用于统计页内不同位置带入留咨\n */\nexport const getZT = (appendLabel = ''): string => {\n try {\n const paramZT = getQuery('zt', window.location.search.slice(1) || '')\n\n const zt =\n typeof paramZT === 'string'\n ? paramZT\n : _sessionStorage.getItem('__zt') || 'default_pc'\n\n if (zt !== 'default_pc') {\n _sessionStorage.setItem('__zt', zt)\n }\n\n return `${zt}${appendLabel ? `_${appendLabel}` : ''}`\n } catch (e) {\n return `default_pc${appendLabel ? `_${appendLabel}` : ''}`\n }\n}\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/6-active-302f0f226256e74dd597eef67af947d4.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/2-active-97125ececab32497c8269fd56c86d0e1.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAPKADAAQAAAABAAAAPAAAAACL3+lcAAACOUlEQVRoBe2bMVLCQBSGdwNGZrBBGzuHTi2gELmBp9ATqL1nsFdPoKfwBogFKdSOsbNRGnFwkaz7Mnm4kw2hk+ybl+Yt2Q383/s3ofkjBB/cAe6Azx2Qy8RHUdRQqtoMgurGTM6CZetXMV/RlTiOfz7D8GfYarVGRRoWAg8Gb/VvNboUUpxqrReuK/ry/56TUmqhxc162Lhot7fHeb+fCwKwk+lHz1y8n3dR6c9J8VRb2+zmQVfzxCfOij9Y07l7s66vtVB561d9TkoRGg0dsxOPEi3GqJThPKvNcTiKXhsT9fWO21gGwUn3YPcue2EZP/ceX451HN+CNtjetXC6lb2nnYeQUuPmHNY46wssQILWdDcKYICHLZy3DwcYnsbWgr419mU415xhSfQ7wPZfT1nv2aLO25ptFrzGAcYJqpWBqTqLXOwwdoJqZYepOotc7DB2gmplh6k6i1zsMHaCamWHqTqLXOwwdoJqZYepOotc7DB2gmplh6k6i1zsMHaCamWHqTqLXOwwdoJqZYepOotc7DB2gmplh6k6i1zsMHaCanUchqAmwqYJN/zoRbU12ywo3gGGVCpOmtqxxr4M55ozLIl+BzgM68MklWqmIbsIcT5fSJPoYZq3BAaIE2e1O1lLWNB7eL4yOdwzXJzG+fwJlxrhUsjr7uHe8nApQFKODztbGoAhZwx5Y+gSbm84X/YDtILmRVlp0J+7pW0wiBNDwtaPVwDq5hWAncJXAGw2HnMHuAP+deAXABq1q6/f4ScAAAAASUVORK5CYII=\"","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { createElement, Component, useRef, useState, useCallback, useDebugValue } from 'react';\nimport invariant from 'invariant';\n\nvar INSTANCE_MAP = new Map();\nvar OBSERVER_MAP = new Map();\nvar ROOT_IDS = new Map();\nvar consecutiveRootId = 0;\n/**\n * Generate a unique ID for the root element\n * @param root\n */\n\nfunction getRootId(root) {\n if (!root) return '';\n if (ROOT_IDS.has(root)) return ROOT_IDS.get(root);\n consecutiveRootId += 1;\n ROOT_IDS.set(root, consecutiveRootId.toString());\n return ROOT_IDS.get(root) + '_';\n}\n/**\n * Monitor element, and trigger callback when element becomes inView\n * @param element {HTMLElement}\n * @param callback {Function} Called with inView\n * @param options {Object} InterSection observer options\n * @param options.threshold {Number} Number between 0 and 1, indicating how much of the element should be inView before triggering\n * @param options.root {HTMLElement}\n * @param options.rootMargin {String} The CSS margin to apply to the root element.\n */\n\n\nfunction observe(element, callback, options) {\n if (options === void 0) {\n options = {};\n }\n\n // IntersectionObserver needs a threshold to trigger, so set it to 0 if it's not defined.\n // Modify the options object, since it's used in the onChange handler.\n if (!options.threshold) options.threshold = 0;\n var _options = options,\n root = _options.root,\n rootMargin = _options.rootMargin,\n threshold = _options.threshold; // Validate that the element is not being used in another \n\n invariant(!INSTANCE_MAP.has(element), \"react-intersection-observer: Trying to observe %s, but it's already being observed by another instance.\\nMake sure the `ref` is only used by a single instance.\\n\\n%s\", element);\n /* istanbul ignore if */\n\n if (!element) return; // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n // An observer with the same options can be reused, so lets use this fact\n\n var observerId = getRootId(root) + (rootMargin ? threshold.toString() + \"_\" + rootMargin : threshold.toString());\n var observerInstance = OBSERVER_MAP.get(observerId);\n\n if (!observerInstance) {\n observerInstance = new IntersectionObserver(onChange, options);\n /* istanbul ignore else */\n\n if (observerId) OBSERVER_MAP.set(observerId, observerInstance);\n }\n\n var instance = {\n callback: callback,\n element: element,\n inView: false,\n observerId: observerId,\n observer: observerInstance,\n // Make sure we have the thresholds value. It's undefined on a browser like Chrome 51.\n thresholds: observerInstance.thresholds || (Array.isArray(threshold) ? threshold : [threshold])\n };\n INSTANCE_MAP.set(element, instance);\n observerInstance.observe(element);\n return instance;\n}\n/**\n * Stop observing an element. If an element is removed from the DOM or otherwise destroyed,\n * make sure to call this method.\n * @param element {Element}\n */\n\nfunction unobserve(element) {\n if (!element) return;\n var instance = INSTANCE_MAP.get(element);\n\n if (instance) {\n var observerId = instance.observerId,\n observer = instance.observer;\n var root = observer.root;\n observer.unobserve(element); // Check if we are still observing any elements with the same threshold.\n\n var itemsLeft = false; // Check if we still have observers configured with the same root.\n\n var rootObserved = false;\n /* istanbul ignore else */\n\n if (observerId) {\n INSTANCE_MAP.forEach(function (item, key) {\n if (key !== element) {\n if (item.observerId === observerId) {\n itemsLeft = true;\n rootObserved = true;\n }\n\n if (item.observer.root === root) {\n rootObserved = true;\n }\n }\n });\n }\n\n if (!rootObserved && root) ROOT_IDS[\"delete\"](root);\n\n if (observer && !itemsLeft) {\n // No more elements to observe for threshold, disconnect observer\n observer.disconnect();\n } // Remove reference to element\n\n\n INSTANCE_MAP[\"delete\"](element);\n }\n}\n\nfunction onChange(changes) {\n changes.forEach(function (intersection) {\n var isIntersecting = intersection.isIntersecting,\n intersectionRatio = intersection.intersectionRatio,\n target = intersection.target;\n var instance = INSTANCE_MAP.get(target); // Firefox can report a negative intersectionRatio when scrolling.\n\n /* istanbul ignore else */\n\n if (instance && intersectionRatio >= 0) {\n // If threshold is an array, check if any of them intersects. This just triggers the onChange event multiple times.\n var inView = instance.thresholds.some(function (threshold) {\n return instance.inView ? intersectionRatio > threshold : intersectionRatio >= threshold;\n });\n\n if (isIntersecting !== undefined) {\n // If isIntersecting is defined, ensure that the element is actually intersecting.\n // Otherwise it reports a threshold of 0\n inView = inView && isIntersecting;\n }\n\n instance.inView = inView;\n instance.callback(inView, intersection);\n }\n });\n}\n\nfunction isPlainChildren(props) {\n return typeof props.children !== 'function';\n}\n/**\n * Monitors scroll, and triggers the children function with updated props\n *\n \n {({inView, ref}) => (\n

{`${inView}`}

\n )}\n
\n */\n\n\nvar InView =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InView, _React$Component);\n\n function InView() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n inView: false,\n entry: undefined\n });\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleNode\", function (node) {\n if (_this.node) unobserve(_this.node);\n _this.node = node ? node : null;\n\n _this.observeNode();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleChange\", function (inView, entry) {\n // Only trigger a state update if inView has changed.\n // This prevents an unnecessary extra state update during mount, when the element stats outside the viewport\n if (inView !== _this.state.inView || inView) {\n _this.setState({\n inView: inView,\n entry: entry\n });\n }\n\n if (_this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n _this.props.onChange(inView, entry);\n }\n });\n\n return _this;\n }\n\n var _proto = InView.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n invariant(this.node, \"react-intersection-observer: No DOM node found. Make sure you forward \\\"ref\\\" to the root DOM element you want to observe.\");\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If a IntersectionObserver option changed, reinit the observer\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold) {\n unobserve(this.node);\n this.observeNode();\n }\n\n if (prevState.inView !== this.state.inView) {\n if (this.state.inView && this.props.triggerOnce) {\n unobserve(this.node);\n this.node = null;\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.node) {\n unobserve(this.node);\n this.node = null;\n }\n };\n\n _proto.observeNode = function observeNode() {\n if (!this.node) return;\n var _this$props = this.props,\n threshold = _this$props.threshold,\n root = _this$props.root,\n rootMargin = _this$props.rootMargin;\n observe(this.node, this.handleChange, {\n threshold: threshold,\n root: root,\n rootMargin: rootMargin\n });\n };\n\n _proto.render = function render() {\n var _this$state = this.state,\n inView = _this$state.inView,\n entry = _this$state.entry;\n\n if (!isPlainChildren(this.props)) {\n return this.props.children({\n inView: inView,\n entry: entry,\n ref: this.handleNode\n });\n }\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n as = _this$props2.as,\n tag = _this$props2.tag,\n triggerOnce = _this$props2.triggerOnce,\n threshold = _this$props2.threshold,\n root = _this$props2.root,\n rootMargin = _this$props2.rootMargin,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"as\", \"tag\", \"triggerOnce\", \"threshold\", \"root\", \"rootMargin\"]);\n\n return createElement(as || tag || 'div', _extends({\n ref: this.handleNode\n }, props), children);\n };\n\n return InView;\n}(Component);\n\n_defineProperty(InView, \"displayName\", 'InView');\n\n_defineProperty(InView, \"defaultProps\", {\n threshold: 0,\n triggerOnce: false\n});\n\n/* eslint-disable react-hooks/exhaustive-deps */\nfunction useInView(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ref = useRef();\n\n var _React$useState = useState({\n inView: false,\n entry: undefined\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var setRef = useCallback(function (node) {\n if (ref.current) {\n unobserve(ref.current);\n }\n\n if (node) {\n observe(node, function (inView, intersection) {\n setState({\n inView: inView,\n entry: intersection\n });\n\n if (inView && options.triggerOnce) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve(node);\n }\n }, options);\n } // Store a reference to the node\n\n\n ref.current = node;\n }, [options.threshold, options.root, options.rootMargin, options.triggerOnce]);\n useDebugValue(state.inView);\n return [setRef, state.inView, state.entry];\n}\n\nexport default InView;\nexport { InView, useInView };\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","module.exports = require(\"core-js/library/fn/array/is-array\");","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/2-bg-7b0bd8d1c207df4d20e834a8ebf1f96e.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/7-bg-6bcca493d83af6ce48510adfea7576ba.png\";","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/dongchedi-logo-db4472fc50bcddce0766b6de60aec985.svg\";","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","module.exports = require(\"core-js/library/fn/is-iterable\");","import css from 'styled-jsx/css'\n\nconst imageStyles = css.global`\n .motor-pc-image {\n position: relative;\n display: inline-block;\n max-width: 100%;\n }\n .motor-pc-image-holder img {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n .motor-pc-image-auto img {\n max-width: 100%;\n }\n .motor-pc-image-fade {\n opacity: 0;\n transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),\n transform 0.3s ease-in-out;\n }\n .motor-pc-image-in {\n opacity: 1;\n }\n\n .motor-pc-image-hover {\n transition: opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1),\n transform 0.3s ease-in-out;\n }\n .motor-pc-image-hover:hover {\n transform: scale(1.1);\n }\n`\nexport default imageStyles\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;"],"sourceRoot":""}